检测在Java 7中按下的键

时间:2013-12-14 14:32:38

标签: 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());

1 个答案:

答案 0 :(得分:6)

侦听两个单独的事件,一个是按下键的键,另一个是释放它的位置。

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