键列表,键按下与键类型

2022-09-01 03:06:44

我有一个JFrame(嗯,一个扩展JFrame的类),我想在按F5键时执行操作。因此,我使该类实现了 KeyListener。随之而来的是三种方法,keyPressed,keyReleased和keyTyped。

我应该使用哪种方法来侦听 F5 是否被按下?键已按下还是按键键入?我目前有以下内容,但是当我按F5时,它不会打印任何内容。

public void keyPressed(KeyEvent e) {
    if(e.getKeyCode() == KeyEvent.VK_F5)
        System.out.println("F5 pressed");
}

public void keyReleased(KeyEvent arg0) {
    // TODO Auto-generated method stub

}

public void keyTyped(KeyEvent arg0) {
    // TODO Auto-generated method stub

}

答案 1
keyPressed - when the key goes down
keyReleased - when the key comes up
keyTyped - when the unicode character represented by this key is sent by the keyboard to system input.

我个人会为此使用keyRelease。只有当他们抬起手指时,它才会开火。

请注意,keyTyped 仅适用于可以打印的内容(我不知道 F5 是否可以打印),我相信如果按住键,它会一遍又一遍地触发。这对于类似的事情很有用...在屏幕上移动角色或其他内容。


答案 2

也不。您不应该使用 KeyLIstener。

Swing 被设计为与键绑定一起使用。阅读 Swing 教程中有关如何使用键绑定的部分。


推荐