1. Computing

A KeyListener Example Program

By

Java Code Listing

The following Java code listing is to show an example program which implements the KeyListener interface. When executed the Java code will show a very simple Swing Graphical User Interface.

The GUI is made up of a JFrame which contains two JTextAreas. The first, feedbackText JTextArea is placed inside a JScrollPane and is used to display text generating by the KeyListener events. The JScrollPane allows the user to see all the lines of text generated by the KeyListener events. The second is the inputText JTextArea - while this JTextArea has the focus it will generate KeyListener events as the user types into it. By default the inputArea JTextArea will have the focus when the JFrame appears.

The KeyListener interface could have been implemented as a separate class, or extending the JFrame but in this instance using an anonymous inner class makes the most sense. The keyPressed method is called when a user presses a key down, the keyReleased method is called when a user releases the key. The keyTyped method is called when a character key is typed into the inputText JTextArea.

The article that goes with this program listing is Using a Key Listener.

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;

//Here's a class for a simple GUI that uses a JFrame
//to hold to JTextAreas - one will listen for the key events
//and the other will sit inside a JScrollPane providing feedback
//about the KeyListener events being triggered

public class KeyListenerExample {
    
    JTextArea inputText;
    JTextArea feedbackText;

     //Note: Typically the main method will be in a
    //separate class. As this is a simple one class
    //example it's all in the one class.
    public static void main(String[] args) {
     

         //Use the event dispatch thread for Swing components
         EventQueue.invokeLater(new Runnable()
         {
             
            @Override
             public void run()
             {
                 
                 new KeyListenerExample();         
             }
         });
              
    }
    
    public KeyListenerExample()
    {
        JFrame guiFrame = new JFrame();
        
        //make sure the program exits when the frame closes
        guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        guiFrame.setTitle("Creating a Table Example");
        guiFrame.setSize(700,200);
      
        //This will center the JFrame in the middle of the screen
        guiFrame.setLocationRelativeTo(null);
        
        //This JTextArea is used to display information about
        //the keylistener events. It's place in a JScrollPane
        //to allow the scrolling through all the events triggered
        feedbackText = new JTextArea();
        JScrollPane scrollText = new JScrollPane(feedbackText);
        
        //This JTextArea will trigger the KeyListener events as
        //long as it hold the focus
        inputText = new JTextArea();
        
        //The KeyListener interface is implemented as an anonymous
        //inner class using the addKeyListener method.
        inputText.addKeyListener(new KeyListener()
        {
              //When any key is pressed and released then the 
              //keyPressed and keyReleased methods are called respectively.
              //The keyTyped method is called when a valid character is typed.
              //The getKeyChar returns the character for the key used. If the key
              //is a modifier key (e.g., SHIFT, CTRL) or action key (e.g., DELETE, ENTER)
              //then the character will be a undefined symbol.
              @Override 
              public void keyPressed(KeyEvent e)
              {
                  feedbackText.append("Key Pressed: " + e.getKeyChar() + "\n");
              }
              @Override
              public void keyReleased(KeyEvent e)
              {
                  feedbackText.append("Key Released: " + e.getKeyChar() + "\n");
              }
              
              @Override
              public void keyTyped(KeyEvent e)
              {
                  //The getKeyModifiers method is a handy
                  //way to get a String representing the
                  //modifier key.
                  feedbackText.append("Key Typed: " + e.getKeyChar() + " " + KeyEvent.getKeyModifiersText(e.getModifiers()) + "\n");
              }
        });
     
        guiFrame.add(inputText, BorderLayout.NORTH);
        guiFrame.add(scrollText, BorderLayout.CENTER);
        guiFrame.setVisible(true);
    }
    
}
  1. About.com
  2. Computing
  3. Java
  4. Create User Interfaces
  5. Handling Events
  6. A KeyListener Example Program

©2014 About.com. All rights reserved.