检测在Java 7中按下的键

sky*_*000 2 java swing key-bindings

我正在尝试键绑定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());
Run Code Online (Sandbox Code Playgroud)

Jos*_*iah 6

听取两个单独的事件,一个是按下按键,另一个是释放按键的事件.

按键应该设置一个标志,释放它清除标志.然后你可以检查标志的值,而不是不断尝试纠缠键盘.当您查看的不仅仅是一个键时,您需要将所有当前按下的KeyStrokes存储在地图中.

  • +1用于在Map中存储当前按下的"KeyStrokes"(非键码).有关完整的工作示例,请查看[使用键盘进行运动]中的"KeyboardAnaimation.java"示例(http://tips4java.wordpress.com/2013/06/09/motion-using-the-keyboard/). (2认同)