检测java 7中按下的键

检测java 7中按下的键,java,swing,key-bindings,Java,Swing,Key Bindings,我正在尝试按键绑定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

我正在尝试按键绑定
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());

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

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

在地图中存储当前按下的
按键(非按键代码)时,可能会出现+1的重复。有关完整的工作示例,请查看中的
KeyboardAnaimation.java
示例。