Java ActionEvent create for key event

Description

Java ActionEvent create for key event

import java.awt.AWTEventMulticaster;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class Main extends JComponent {
   private ActionListener actionListenerList = null;

   public Main() {
      KeyListener internalKeyListener = new KeyAdapter() {
         public void keyPressed(KeyEvent keyEvent) {
            if (actionListenerList != null) {
               int keyCode = keyEvent.getKeyCode();
               String keyText = KeyEvent.getKeyText(keyCode);
               ActionEvent actionEvent = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, keyText);
               actionListenerList.actionPerformed(actionEvent);
            }/*from ww  w .  ja v  a  2 s. c  o m*/
         }
      };
      MouseListener internalMouseListener = new MouseAdapter() {
         public void mousePressed(MouseEvent mouseEvent) {
            requestFocusInWindow();
         }
      };
      addKeyListener(internalKeyListener);
      addMouseListener(internalMouseListener);
   }

   public void addActionListener(ActionListener actionListener) {
      actionListenerList = AWTEventMulticaster.add(actionListenerList, actionListener);
   }

   public void removeActionListener(ActionListener actionListener) {
      actionListenerList = AWTEventMulticaster.remove(actionListenerList, actionListener);
   }

   public boolean isFocusable() {
      return true;
   }

   public static void main(String[] a) {
      JFrame frame = new JFrame("Key Text Sample");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      Main keyTextComponent = new Main();
      final JTextField textField = new JTextField();
      ActionListener actionListener = new ActionListener() {
         public void actionPerformed(ActionEvent actionEvent) {
            String keyText = actionEvent.getActionCommand();
            textField.setText(keyText);
         }
      };
      keyTextComponent.addActionListener(actionListener);
      frame.add(keyTextComponent, BorderLayout.CENTER);
      textField.setText("Press keyboard after clicking the above blank area");
      frame.add(textField, BorderLayout.SOUTH);
      frame.setSize(300, 200);
      frame.setVisible(true);
   }
}



PreviousNext

Related