Question

I have a problem with key listener, i want to type in my program using JButtons and keyboard( depending on user preferences ), and i don't want how to implement KeyListener's. I added to my JTextAreas KeyListeners like this:

JTextArea0.addKeyListener(this);
JTextArea1.addKeyListener(this);

Also there are added ActionListeners to my buttons, and in method actionPerformed from ActionListener i want to do something like this:

if(e.getSource()=JButton0||isPressedKey for example 0){
do something...
}

How can i do something like that ?

Was it helpful?

Solution

Your will be understanding using below example :

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);
    }

}

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top