我有一个实现 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/