当前位置: 首页 > 知识库问答 >
问题:

在java 7中检测到一个键被按住了

桑博远
2023-03-14

我正在尝试键绑定ad键以使角色左右移动,但当您按下这些键时,这些动作只会发生一次。当按住ad时,如何修改此代码以使其执行事件?

p.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_W, 0),"up");
p.getActionMap().put("up", new UpAction());
p.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_A, 0), "left");
p.getActionMap().put("left", new LeftAction());
p.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_D, 0), "right");
p.getActionMap().put("right", new RightAction());
p.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),"quit");
p.getActionMap().put("quit", new StopAction());

共有1个答案

向俊贤
2023-03-14

监听两个独立的事件,一个是按键被按下的事件,另一个是按键被释放的事件。

按下键应设置一个标志,释放它清除所述标志。然后,您可以检查标志的值,而不是不断尝试缠住键盘。当您查看多个键时,您可能希望将所有当前按下的击键存储在地图中。

 类似资料:
  • 所以最基本的,我想做的是使用LWJGL让我的球员在比赛中移动。玩家当前正在移动,但当你按住按钮时,他没有继续移动。 更新的代码: 我的代码仍然有同样的问题,我开始认为是Keyboard.next()阻止了我按住按钮,而播放器仍然在移动。

  • 问题内容: 我正在用python开发一个秒表类型的程序,我想知道如何检测是否按下了一个键(例如p表示暂停,s表示停止),而我不希望它像raw_input这样等待用户输入,然后继续执行。有人知道如何在while循环中执行此操作吗? 另外,我想做这个跨平台的,但是如果那不可能,那么我的主要开发目标是linux 问题答案: 对于那些在窗户上努力寻找可行答案的人,我的是:pynput 上面的功能将打印你按

  • 问题内容: 是否有可能结合按键的组合来触发单个事件? 我已经在Chrome浏览器中尝试过,但该事件不会触发。 称我为疯狂,但我正在编写Chrome扩展程序,并希望同时按下+ + 键将其强制为隐藏的开发人员模式。 问题答案: 如果要检测的,和钥匙都在同一时间全部下来,你得看都和并保持地图为down的那些的。当他们全都崩溃时,请触发您的事件。 我假设您不关心它们按什么顺序按下(因为要可靠地按一下会很痛

  • 问题内容: 我需要知道现在正在按下哪个键。我不是要捕获一些特定的键来触发事件或类似的事情, 我想知道现在按下了哪些键并显示它们的列表。 我还需要捕获特殊键,例如F1 … F12,Shift,Alt,Home,Windows等。基本上,键盘上的所有键都是如此。 我该如何在python中做到这一点?如何捕获键盘事件? 编辑 就是这样,您知道我不是要创建键盘记录程序。我正在尝试做一个诊断工具(我在笔记本

  • 问题内容: 我正在尝试使用win32api通过特定的按键来打破Python中的循环。怎么会这样呢? 在以下代码中, win32api.KeyPress(’H’) 的实际版本是什么? 修订: 我希望能够通过按 h 键来中断循环。 编辑: 我正在尝试制作一个反复报告鼠标位置的程序,并且需要一种退出该程序的机制。 请参阅修订的代码。 问题答案: 只是底层Windows低层库的接口。见功能: 确定在调用函

  • 问题内容: 我正在命令窗口(Windows 7,Python 3.1)中运行进程,我希望用户通过按ESCape键来中止该进程。但是,按ESCape键似乎没有执行任何操作:-(,循环永不中断。我也尝试从IDE(机翼)内部运行脚本,但同样,循环也不能中断。 以下是我的概念验证测试的简化版本… 如果有人能告诉我我可能会出问题的地方,我将不胜感激。 问题答案: Python 3字符串是unicode,因此