【发布时间】:2015-04-23 00:33:45
【问题描述】:
我正在为乐高 EV3 机器人制作一种远程控制程序。那部分无关紧要。所以我做了一个GUI,我想在按键时控制机器人。我知道我必须使用一个叫做 KeyListener 的东西,我什至看到了一个应该可以工作的教程。
GUI 类代码就在这里。有点长,但最后有 KeyPressed 事件。
我不确定我做错了什么,但程序根本没有检测到是否按下了任何键。任何。
我非常感谢任何有关如何使这项工作的帮助。
编辑:
keyManager=KeyboardFocusManager.getCurrentKeyboardFocusManager();
keyManager.addKeyEventDispatcher(new KeyEventDispatcher() {
// UP:38 DOWN:40 LEFT:37 RIGHT:39
public boolean dispatchKeyEvent(KeyEvent e) {
if(e.getID()==KeyEvent.KEY_PRESSED && e.getKeyCode()==38){
System.out.println("UP");
return true;
}
if(e.getID()==KeyEvent.KEY_RELEASED&& e.getKeyCode()==38){
System.out.println("RELEASED");
return true;
}
return false;
}
});
所以我四处浏览,发现 KeyboardFocusManger 有点适合我。我正在用 println 测试它。我只有一个问题。当我按住 UP 键时,我希望它只打印一次。因为 UP 键基本上会启动电机,它会一直移动,直到松开键停止它。
关于如何做到这一点的任何想法?
【问题讨论】:
-
没有查看完整的代码,但您添加关键侦听器的部分似乎已被注释。无论如何,如果您添加了 keylistener,则目标组件可能不会被聚焦。一旦你的容器显示出来(它必须是可见的)尝试在你添加监听器的任何组件中调用
component.requestFocusInWindow()
标签: java keylistener