如何使用Java Swing检测击键的释放?

时间:2014-10-21 16:57:20

标签: java swing action key-bindings

我遇到一些问题,需要一些能够检测按键释放的代码。我正在写一个视频游戏,我想通过按键来触发图标的移动,并在键被释放后终止移动。我已经阅读了其他人的帖子,他们似乎说处理这个问题的方法是在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永远不会执行。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

KeyStroke.getKeyStroke("released a")

这不是正确的格式。它应该是:

KeyStroke.getKeyStroke("released A")

如果您需要更多帮助,请发布显示问题的正确SSCCE