Java can';不要让KeyListener在我的GUI中工作

Java can';不要让KeyListener在我的GUI中工作,java,keylistener,Java,Keylistener,我正在为乐高EV3机器人制作一种遥控程序。那部分无关紧要。所以我制作了一个GUI,我想在按键时控制机器人。我知道我必须使用一种叫做KeyListener的东西,我甚至看到了一个应该可以使用的教程 GUI类代码就在这里。有点长,但它在最后按下了事件键 我不确定我做错了什么,但程序根本检测不到是否按下了任何键。任何 我真的非常感谢任何关于如何使这项工作的帮助 编辑: 所以我浏览了一下,发现KeyboardFocusManger对我来说很有用。我正在用println测试它。我只有一个问题。当我按住向

我正在为乐高EV3机器人制作一种遥控程序。那部分无关紧要。所以我制作了一个GUI,我想在按键时控制机器人。我知道我必须使用一种叫做KeyListener的东西,我甚至看到了一个应该可以使用的教程

GUI类代码就在这里。有点长,但它在最后按下了事件键

我不确定我做错了什么,但程序根本检测不到是否按下了任何键。任何

我真的非常感谢任何关于如何使这项工作的帮助

编辑:

所以我浏览了一下,发现KeyboardFocusManger对我来说很有用。我正在用println测试它。我只有一个问题。当我按住向上键时,我希望它只打印一次。因为向上键基本上会启动电机,它会一直移动,直到松开键停止

有什么办法吗?

这样做:

frame.getContentPane().addKeyListener(this);

您可能需要使用不同的组件,这取决于您希望使用的键侦听器。

KeyListener
存在问题,尤其是焦点问题,因此,当您的任何文本字段被聚焦时,您的
KeyListener
将不会响应

更好的解决方案是使用密钥绑定API,它允许您控制触发密钥事件所需的焦点级别。例如,结合
Action
API,您可以为键和按钮定义常用操作

请查看和以了解更多详细信息


Ps-我嫉妒你,祝你好运;)

我还没有看过完整的代码,但是您添加的键侦听器部分似乎已经被注释了。无论如何,如果您添加了keylistener,目标组件可能不会被聚焦。显示容器后(必须可见),尝试在添加的任何组件中调用
component.requestFocusInWindow()
,listenerI似乎无法理解键绑定和操作,至少目前是这样。我相信我找到了一个快速解决问题的方法,我编辑了我原来的问题。你能帮我看看吗?谢谢:)@serspace这是(不必要的)高压。对于只对关键操作响应一次的愿望,您需要升起一个标志,应用程序的另一部分可以监视该标志。这排除了一些操作系统执行的重复按键事件的可能性
frame.getContentPane().addKeyListener(this);