检测在java 7中按下的键

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

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

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