# KeyEvent bei TAB-Druck



## AmunRa (28. Mrz 2008)

Hey hab ein kleine

Frage:

Warum löst die Klasse TextField bei dem Druck auf die Taste [Tab] kein KeyEvent aus 

bei allen anderen Tasten funktioniert es?
Hat jemand eine Idee?

Michael


----------



## dirty-mg (28. Mrz 2008)

Probier mal folgendes:


```
public class MyFrame extends JFrame implements AWTEventListener {

    public MyFrame() {
        // init GUI ...

        Toolkit tk = Toolkit.getDefaultToolkit();
        tk.addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK | AWTEvent.WINDOW_EVENT_MASK);
    }

    public void eventDispatched(AWTEvent event) {
        if (event instanceof KeyEvent) {
            KeyEvent ke = (KeyEvent) event;
            // wenn Tabulator gedrückt wird, mach irgendwas
            if (ke.getKeyCode() == KeyEvent.VK_TAB) {
                // mache irgendwas ...
            }
        }
    }
}
```

Nun wird auch die Tabulatortaste abgefangen. Allerdings wird Tab immer abgefangen, egal welche Komponente in deinem Fenster Fokus hat. 
Das " | AWTEvent.WINDOW_EVENT_MASK" kannst Du weg lassen, wenn Du nur KeyEvents abfangen willst. Ansonsten kannst Du noch sehr schön WindowEvents abfangen.

mfg
Marcus


----------



## AmunRa (28. Mrz 2008)

Hey thx

da ich sowieso nur eine Komponente in meinem Prog habe ist es kein Problem

habs ausprobiert und Funktioniert.

Michael


----------



## dirty-mg (28. Mrz 2008)

sehr schön ;-)


----------



## Wildcard (28. Mrz 2008)

http://java.sun.com/javase/6/docs/api/java/awt/Component.html#setFocusTraversalKeysEnabled(boolean)


----------



## dirty-mg (28. Mrz 2008)

so gehts auch ...


----------



## Wildcard (28. Mrz 2008)

Was heißt auch, deine Variante ist wohl etwas daneben, oder?


----------



## dirty-mg (28. Mrz 2008)

nein, meine Variante ist nicht daneben. Das heißt nur, dass man die Tab-Taste auch auf Deinem 1.Weg abfangen kann, wenn man

```
jTextField.setFocusTraversalKeysEnabled(false);
```
benutzt.

Möchtest Du generell KeyEvents abfangen (z.B. Fenster schließen beim Drücken von ESC), dann ist mein Vorschlag der günstigere.


----------



## Wildcard (28. Mrz 2008)

Nein, dann ist es immer noch unsauber. Für sowas verwendet man die Input- und die ActionMap.


----------



## dirty-mg (28. Mrz 2008)

wer sagt denn das?


----------



## Wildcard (28. Mrz 2008)

SUN


----------

