Java KeyListener 的 keyReleased 左右箭头键不调用

标签 java swing keylistener

我有一个实现 KeyListener 的 KeyHandler 类。除了左箭头键和右箭头键之外的所有键都可以工作,它们记录为按下但从未释放(向上和向下箭头可以工作,就像所有其他键一样)。键监听器被添加到 JFrame 上的 Canvas 中。

public class KeyHandler implements KeyListener {

    public void keyPressed(KeyEvent e) {
        System.out.println("Pressed");
    }

    public void keyReleased(KeyEvent e) {
        System.out.println("Released");
    }

    public void keyTyped(KeyEvent e) {}

}

这种行为有原因吗?

最佳答案

来自 java api 的片段 - Keyevent:

Not all keyboards or systems are capable of generating all virtual key codes. No attempt is made in Java to generate these keys artificially.

所以从 Java 端来看,它仍然是定义的行为。然而,从我的逻辑感觉来看,我也无法给你上/下和左/右箭头键之间的任何区别。 只要我们遵循 API 定义即可。这似乎与系统有关。

关于Java KeyListener 的 keyReleased 左右箭头键不调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31378672/

相关文章:

从 FXML 获取对象时 JavaFX 返回 null

Java:如何在不使用 actionListener 的情况下检测到用户已经完成了他们的保存名称?

java - 按键输入不能流畅地移动图像

java - 从 JSP 运行 java 主类

java - 尝试在简单的游戏中使用 KeyListener 移动对象

java - 在 JFrame 中创建一个键事件

java - 文件处理

java - 在 java google app engine 应用程序上执行 python

java - 在Netbeans模块中覆盖jar中的类

java - 我怎样才能将一个物体设置为焦点