简单的KeyListener无法正常工作
我正在研究一个非常简单的Java项目,试图了解如何使用KeyListener。 我创建了一个Main类和一个KeyListener,MouseListener类。 我想按键盘键时会发生一些事情。 到目前为止,唯一可行的是点击时“Hello”。
这是我的代码:
import javax.swing.JFrame; import javax.swing.JPanel; public class KeyPractice{ public static void main(String[] args) { JFrame frame = new JFrame(); JPanel panel = new JPanel(); panel.addKeyListener(new KeyEar()); panel.addMouseListener(new KeyEar()); frame.add(panel); frame.setVisible(true); frame.setSize(400, 400); } }
和Keylistenerclass……
import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class KeyEar implements KeyListener, MouseListener { public KeyEar(){ } @Override public void mouseClicked(MouseEvent arg0) { System.out.println("Hello"); } @Override public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void keyPressed(KeyEvent arg0) { System.out.println("Hello"); } @Override public void keyReleased(KeyEvent arg0) { System.out.println("Hello"); } @Override public void keyTyped(KeyEvent arg0) { System.out.println("Hello"); } }
JPanel
无法获得KeyListener
的工作重点。
首选方法是使用键绑定进行Swing。 即使组件没有焦点,您也可以将Action映射到KeyStroke。
键绑定示例
-
JPanel不是可聚焦的JComponent ,必须添加可聚焦或与
KeyEvents
交互的Object
/JComponents
-
KeyListener不适合Swing JComponents ,因为Swing被KeyBindings取代
我有类似的问题,但它解决起来很简单,但你必须找到如何解决它不是那么容易的任务:D
那怎么解决这个? 我只是将所有按钮设置为可聚焦的假。 instanceOfYourButton.setFocusable(false);
而已