java - 在java 7中检测按下的键

标签 java swing key-bindings

我正在尝试对 ad 键进行按键绑定(bind),以使角色左右移动,但这些操作仅在您按下按键时发生一次。如何修改此代码以使其在按住 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 存储在一张 map 中。

关于java - 在java 7中检测按下的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20584539/

相关文章:

java - 如何将 mouseListener 添加到匿名 JLabel 对象?

emacs - 全局覆盖 emacs 键绑定(bind)

java - 按键绑定(bind)不起作用 - swing

java - 我们可以使用 KeyListener 实现 KeyBindings 吗?

java - 适用于不同语言环境的正则表达式

java - 使用反射输出对象中变量的所有值

java - 如何将图像嵌入到模板 HTML Velocity 中?

java - 如何找出导致 poi 损坏 xlsx/xlsm 文件的原因

java - 这游戏有解决办法吗

java - 如何让JTextPane水平滚动