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

标签 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 永远不会执行。

我做错了什么?

最佳答案

KeyStroke.getKeyStroke("released a")

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

KeyStroke.getKeyStroke("released A")

如果您需要更多帮助,请发布适当的SSCCE这说明了问题。

关于java - 如何使用 Java Swing 检测击键的释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26492153/

相关文章:

java - 在 Java 中为 CustomButton 创建 ActionEvent 对象

java - 如何在 HashMap 上使用双迭代器修复 'java.util.ConcurrentModificationException'

java - 除非调整 JFrame 大小,否则图像不会出现

java - 在一帧中显示消息对话框警告和信息消息类型

java - 无法使用 Selenium WebDriver 找到 Canvas 上的元素

c++ - 如何确定 QAction 的来源?

java - 用于 alfresco 4.2c 的远程 Alfresco Web 服务

java - Java中定义一个变量类型为另一个变量

java - 项目名称被附加到输出编写器

java - 用户关闭 JDialog 时的指示