import java.awt.event.*; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.WindowConstants; public class KeyEcho extends JPanel { private static final long serialVersionUID = 1L; private JLabel display; public KeyEcho() { display = new JLabel("None"); add(display); setFocusable(true); addKeyListener(new KeyHandler(display)); } /* Listener for the button */ private class KeyHandler extends KeyAdapter { JLabel display; public KeyHandler(JLabel display) { this.display = display; } /* Notice we don't have to worry about keyPressed or keyReleased */ public void keyTyped(KeyEvent event) { display.setText(event.getKeyChar() + " "); display.repaint(); } } private static void createAndShowGUI() { JFrame frame = new JFrame("Key Echo"); /* Adds the panel to the frame */ frame.setContentPane(new KeyEcho()); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.pack(); /* Shows the GUI */ frame.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }