1. ホーム
  2. java

[解決済み] KeyListener、keyPressedとkeyTypedの比較

2022-03-13 11:20:56

質問

JFrame(というか、JFrameを継承したクラス)を持っていて、F5キーを押したときにアクションを起こしたいのですが、どうすればいいですか?そこで、このクラスはKeyListenerを実装するようにした。そして、keyPressed、keyReleased、keyTypedという3つのメソッドを実装しました。

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

}

解決方法は?

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.

個人的にはkeyReleasedを使いたいところです。指を上げたときだけ発射されます。

なお、keyTypedは印刷可能なもの(F5が可能かどうかは知りません)にのみ機能し、キーを押し続けていると何度でも発火すると思います。これは、キャラクターを画面上で移動させるような場合に便利です。