JFrame(JFrameを拡張するクラス)があり、F5キーを押したときにアクションを実行したい。そこで、クラスにKeyListenerを実装させました。それに伴い、keyPressed、keyReleased、keyTypedの3つのメソッドが登場しました。
押されているF5をリッスンするには、これらの方法のうちどれを使用する必要がありますか? keyPressedまたはkeyTyped?現在、次のものがありますが、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が可能かどうかはわかりません)に対してのみ機能し、キーが押されていると何度も何度も起動することに注意してください。これは、画面上でキャラクターを動かすなどの場合に便利です。
どちらでもない。 KeyLIstenerを使用しないでください。
Swingは、キーバインドで使用するように設計されています。 キーバインドの使用方法 に関するSwingチュートリアルのセクションをお読みください。
private String message;
private ScreenManager s;
//Here is an example of code to add the keyListener() as suggested; modify
public void init(){
Window w = s.getFullScreenWindow();
w.addKeyListener(this);
public void keyPressed(KeyEvent e){
int keyCode = e.getKeyCode();
if(keyCode == KeyEvent.VK_F5)
message = "Pressed: " + KeyEvent.getKeyText(keyCode);
}
すぐに効果が必要な場合はkeyPressed
を使用し、キーを放した後に効果が必要な場合はkeyReleased
を使用する必要があります。 F5は文字ではないため、keyTyped
は使用できません。 keyTyped
は、文字が押されたときにのみアクティブになります。