我在获取一些检测击键释放的代码时遇到一些问题。我正在编写一个视频游戏,我想通过按下按键来启动图标的移动,并在释放按键后终止移动。我读过其他人关于此问题的帖子,他们似乎说处理此问题的方法是在 keyReleased 代码中设置一个标志,该标志将终止我假设您在 keyPressed 代码中启动的运动。但是,我假设您必须将 Thread.Sleep 放入 KeyPressed 代码中才能允许 KeyReleased 代码触发(这将设置标志)?否则控制永远不会从 KeyPressed 代码返回到调度循环?
无论如何,这是我无法开始工作的代码,它应该释放键“a”。
MoveGunLeftActionReleased aKeyActionReleased= new MoveGunLeftActionReleased();
…
…
statusPanel.getInputMap().put(KeyStroke.getKeyStroke("released a"), "aCharKeyReleased");
statusPanel.getActionMap().put("aCharKeyReleased", aKeyActionReleased);
… ...
static class MoveGunLeftActionReleased extends AbstractAction
{
public void actionPerformed(ActionEvent rf) {
System.out.println("RELEASED");
aKeyReleased= true;
}
}
对象:aKeyActionReleased 永远不会执行。
我做错了什么?
最佳答案
KeyStroke.getKeyStroke("released a")
这不是正确的格式。应该是:
KeyStroke.getKeyStroke("released A")
如果您需要更多帮助,请发布适当的SSCCE这说明了问题。
关于java - 如何使用 Java Swing 检测击键的释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26492153/