自由地对代码进行一些更改并设法使其工作:
package sample.examples;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Window;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Keys extends JPanel implements KeyListener {
private static final long serialVersionUID = 1L;
public Keys(){
this.setBackground(Color.black);
}
public void keyPressed(KeyEvent e) {
System.out.println("Button Pressed: " + KeyEvent.getKeyText(e.getKeyCode()));
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
public void gui() {
JFrame frame = new JFrame("Keys");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(500,500));
frame.setFocusTraversalKeysEnabled(false);
frame.setFocusable(true);
frame.setContentPane(this);
frame.addKeyListener(this);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
Keys k = new Keys();
k.gui();
}
});
}
}你的一个问题似乎是你没有为JPanel指定任何大小的事实,所以,无论你在哪里点击你从不点击JPanel。为了方便您,我将JPanel涂成黑色。