【问题标题】:Detect a key being held down in java 7检测在 java 7 中按下的键
【发布时间】:2013-12-14 14:32:38
【问题描述】:

我正在尝试对a 和d 键进行键绑定,以使角色左右移动,但这些操作仅在您按下键时发生一次。如何修改此代码以使其在 a 或 d 被按住时执行事件?

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());

【问题讨论】:

标签: java swing key-bindings


【解决方案1】:

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

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

【讨论】:

  • +1 用于在地图中存储当前按下的KeyStrokes(不是键码)。有关完整的工作示例,请查看来自Motion Using the Keyboard 的KeyboardAnaimation.java 示例。
猜你喜欢
  • 2018-09-24
  • 1970-01-01
  • 2014-03-25
  • 2018-10-24
  • 2016-09-25
  • 2014-08-01
  • 1970-01-01
  • 2018-02-15
  • 1970-01-01
相关资源
最近更新 更多