Java KeyListener不起作用,但Mousepressed起作用
这是我的代码的简化版本Java KeyListener不起作用,但Mousepressed起作用,java,user-interface,io,keylistener,keyevent,Java,User Interface,Io,Keylistener,Keyevent,这是我的代码的简化版本 public class StateController extends GraphicsProgram { public Menu menu = new Menu(); public void run() { addMouseListeners(); addKeyListeners(); } } public class Menu { int x = 0; public void keyP
public class StateController extends GraphicsProgram {
public Menu menu = new Menu();
public void run() {
addMouseListeners();
addKeyListeners();
}
}
public class Menu {
int x = 0;
public void keyPressed(KeyEvent e) {
System.out.println(x);
}
public void mousePressed(MousEvent e) {
System.out.println(x);
}
}
当按下鼠标时,程序会进行检测,但当按下某个键时,程序不会打印X。你看到什么问题了吗
非常感谢。如果将侦听器添加到类中,该类必须实现侦听器接口才能获得通知:
public class StateController extends GraphicsProgram implements MouseListener, KeyListener
或者你在飞行中做到:
yourUiElement.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void keyPressed(KeyEvent e) {
System.out.println(x);
}
});
假设您的代码已经编译并且正确实现了KeyListener接口,那么KeyEvents只会被分派到具有焦点的组件。您的StateController没有焦点 默认情况下,JPanel不可聚焦。我猜您的StateController类正在扩展JPanel。因此,您需要:
setFocusable(true)
使面板可聚焦面板.requestFocusInWindow()
。您只能请求关注可见GUI中的组件请发表一个简短但完整的例子,说明你在做什么。您发布的代码毫无意义,因此我们无法告诉您出了什么问题。
这里是我的代码的简化版本
-简化版本对我们没有任何帮助。问题可能出在您决定不包含的代码中。张贴一个适当的说明问题的帖子。