我正在尝试对 a
和 d
键进行按键绑定(bind),以使角色左右移动,但这些操作仅在您按下按键时发生一次。如何修改此代码以使其在按住 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());
最佳答案
监听两个独立的事件,一个是按下按键,另一个是释放按键。
按下该键应设置一个标志,松开该键可清除所述标志。然后你可以检查标志的值,而不是不断地尝试敲击键盘。 当您查看多个按键时,您可能希望将当前按下的所有 KeyStrokes 存储在一张 map 中。
关于java - 在java 7中检测按下的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20584539/