it-swarm.com.de

KeyListener, keyPressed und keyTyped

Ich habe einen JFrame (eine Klasse, die JFrame erweitert) und ich möchte eine Aktion ausführen, wenn ich die Taste F5 drücke. Also habe ich die Klasse KeyListener implementieren lassen. Und damit kamen drei Methoden, keyPressed, keyReleased und keyTyped.

Welche dieser Methoden sollte ich verwenden, um zu hören, dass F5 gedrückt wird? keyPressed oder keyTyped? Ich habe derzeit Folgendes, druckt jedoch nichts, wenn ich F5 drücke.

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

}
36
CodeGuy
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.

Ich persönlich würde keyReleased dafür verwenden. Es wird nur ausgelöst, wenn sie ihren Finger anheben.

Beachten Sie, dass keyTyped nur für etwas funktioniert, das gedruckt werden kann (ich weiß nicht, ob F5 es kann oder nicht), und ich glaube, es wird immer wieder ausgelöst, wenn die Taste gedrückt wird. Dies wäre nützlich, wenn Sie beispielsweise eine Figur über den Bildschirm bewegen oder so.

40
corsiKa

Weder. Sie sollten KEINEN KeyLIstener verwenden.

Swing wurde für die Verwendung mit Schlüsselbindungen entwickelt. Lesen Sie den Abschnitt aus dem Swing-Tutorial zu So verwenden Sie Tastenkombinationen .

18
camickr
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);
}
0
Leo Schoenborn

Sie sollten keyPressed verwenden, wenn Sie einen sofortigen Effekt wünschen, und keyReleased, wenn Sie den Effekt nach dem Loslassen der Taste wünschen. Sie können keyTyped nicht verwenden, da F5 kein Zeichen ist. keyTyped wird nur aktiviert, wenn ein Zeichen gedrückt wird.

0
Ankit Ostwal