Java tutorial
import java.awt.AWTEventMulticaster; import java.awt.BorderLayout; import java.awt.Color; 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 KeyTextComponent extends JComponent { private ActionListener actionListenerList = null; public KeyTextComponent() { setBackground(Color.CYAN); 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); } } }; 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(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new KeyTextComponent(), BorderLayout.CENTER); JTextField field = new JTextField(); field.setText("Click above blank area to request focus"); frame.add(field, BorderLayout.SOUTH); frame.setSize(300, 100); frame.setVisible(true); field.requestFocus(); } }