Home » Desktop Java » awt » event » A complete Key Event example

About Byron Kiourtzoglou

Byron Kiourtzoglou
Byron is a master software engineer working in the IT and Telecom domains. He is an applications developer in a wide variety of applications/services. He is currently acting as the team leader and technical architect for a proprietary service creation and integration platform for both the IT and Telecom industries in addition to a in-house big data real-time analytics solution. He is always fascinated by SOA, middleware services and mobile development. Byron is co-founder and Executive Editor at Java Code Geeks.

A complete Key Event example

With example we shall show you how to create a simple application that can handle all key events. This is very useful when your application gets lots of keyboard input form the user.

In short, all you have to do in order to construct a simple application that demonstrates all key events is:

  • Create a class that implements ActionListener and KeyListener interfaces.
  • Override keyPressed, keyTyped, keyReleased to customize the handling of these specific events.
  • Use event and input maps to print out the key events that occurred.

Let’s see the code snippet below:

package com.javacodegeeks.snippets.desktop;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class CompleteDemo extends JPanel implements KeyListener, ActionListener {

    JTextArea textArea;
    JTextField textFiled;
    static final String nl = "n";

    public static void main(String[] args) {

  javax.swing.SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

    createAndShowGUI();

}

  });
    }

    public CompleteDemo() {

  super(new BorderLayout());

  JButton jb = new JButton("Clear");

  jb.addActionListener(this);

  textFiled = new JTextField(20);

  textFiled.addKeyListener(this);

  //typingArea.setFocusTraversalKeysEnabled(false);

  textArea = new JTextArea();

  textArea.setEditable(false);

  JScrollPane scrPanl = new JScrollPane(textArea);

  scrPanl.setPreferredSize(new Dimension(375, 125));

  add(textFiled, BorderLayout.PAGE_START);

  add(scrPanl, BorderLayout.CENTER);

  add(jb, BorderLayout.PAGE_END);
    }

    @Override
    public void keyPressed(KeyEvent event) {

  display(event, "KEY PRESSED: ");
    }

    @Override
    public void keyTyped(KeyEvent event) {

  display(event, "KEY TYPED: ");
    }

    @Override
    public void actionPerformed(ActionEvent event) {

  //Clear the text components.

  textArea.setText("");

  textFiled.setText("");

  //Return the focus to the typing area.

  textFiled.requestFocusInWindow();
    }

    @Override
    public void keyReleased(KeyEvent event) {

  display(event, "KEY RELEASED: ");
    }

    protected void display(KeyEvent event, String str) {

  String keystr, modStr, tmpStr, actionstr, locStr;

  int eventID = event.getID();

  if (eventID == KeyEvent.KEY_TYPED) {

char key = event.getKeyChar();

keystr = "key str = '" + key + "'";

  } else {

int kCode = event.getKeyCode();

keystr = "kCode = " + kCode + " ("

  + KeyEvent.getKeyText(kCode) + ")";

  }

  int mods = event.getModifiersEx();

  modStr = "mods = " + mods;

  tmpStr = KeyEvent.getModifiersExText(mods);

  if (tmpStr.length() > 0) {

modStr += " (" + tmpStr + ")";

  } else {

modStr += " (no mods)";

  }

  actionstr = "action key? ";

  if (event.isActionKey()) {

actionstr += "YES";

  } else {

actionstr += "NO";

  }

  locStr = "key location: ";

  int location = event.getKeyLocation();

  if (location == KeyEvent.KEY_LOCATION_STANDARD) {

locStr += "standard";

  } else if (location == KeyEvent.KEY_LOCATION_LEFT) {

locStr += "left";

  } else if (location == KeyEvent.KEY_LOCATION_RIGHT) {

locStr += "right";

  } else if (location == KeyEvent.KEY_LOCATION_NUMPAD) {

locStr += "numpad";

  } else { // (location == KeyEvent.KEY_LOCATION_UNKNOWN)

locStr += "unknown";

  }

  textArea.append(str + nl + "    " + keystr + nl + "    "

    + modStr + nl + "    " + actionstr + nl

    + "    " + locStr + nl);

  textArea.setCaretPosition(textArea.getDocument().getLength());
    }

    private static void createAndShowGUI() {

  //Make sure we have nice window decorations.

  JFrame.setDefaultLookAndFeelDecorated(true);

  //Create and set up the window.

  JFrame frame = new JFrame("KeyEventDemo");

  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  //Create and set up the content pane.

  JComponent newContentPane = new CompleteDemo();

  newContentPane.setOpaque(true); //content panes must be opaque

  frame.setContentPane(newContentPane);

  //Display the window.

  frame.pack();

  frame.setVisible(true);
    }

}

 
This as an example on how to monitor all keyevents in a Java Desktop Application.

(No Ratings Yet)
Start the discussion Views Tweet it!

Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you our best selling eBooks for FREE!

 

1. JPA Mini Book

2. JVM Troubleshooting Guide

3. JUnit Tutorial for Unit Testing

4. Java Annotations Tutorial

5. Java Interview Questions

6. Spring Interview Questions

7. Android UI Design

 

and many more ....

 

Receive Java & Developer job alerts in your Area

 

Leave a Reply

avatar
  Subscribe  
Notify of