简而言之,您的面板需要专注。在创建面板的任何地方添加:
panel.setFocusable(true);panel.requestFocusInWindow();
这是一个SSCCE(我建议以后再问其中一个问题):
import java.awt.Dimension;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import javax.swing.Jframe;import javax.swing.JPanel;import javax.swing.SwingUtilities;public class SimpleKeyTest { public static void main(String[] args) { Runnable r = new Runnable() { @Override public void run() { Jframe frame = new Jframe(); JPanel panel = new JPanel(); frame.getContentPane().add(panel); panel.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent e) {} @Override public void keyReleased(KeyEvent e) {} @Override public void keyPressed(KeyEvent e) { System.out.println("Pressed " + e.getKeyChar()); } }); panel.setFocusable(true); panel.requestFocusInWindow(); frame.setSize(new Dimension(300, 300)); frame.setVisible(true); } }; SwingUtilities.invokeLater(r); }}另外,https://www.google.com/search?q = jpanel +
keylistener



