worauf den addKeyListener ??

Status
Nicht offen für weitere Antworten.

dede67

Mitglied
Moin!

Ich habe einen JFrame mit einer ContentPane, einem JTextField und einer JList, die via JScrollPane zur ContentPane zugefügt wird.

Nun soll, unabhängig vom fokussierten Element, auf die ESC-Taste reagiert werden.
Fokussierbar sind maximal vier Elemente:
- das JTextField
- die JList
- ggf. eine horizontale Scrollbar
- ggf. eine vertikale Scrollbar
Für die ersten beiden kann ich das mit addKeyListener(this) erledigen.
Ist der Fokus aber in einer der beiden Scrollbars, läuft der Listener nicht an.

Auch wenn ich einen addKeyListener(this) auf den JFrame, die ContentPane oder die JScrollPane lege, passiert nix.

Was muss ich tun, damit ESC auch erkannt wird, wenn ich mit der TAB-Taste in eine der beiden Scrollbars gewandert bin?

Vielen Dank im voraus,
Detlev
 
B

Beni

Gast
Die ScrollBars sind wohl wieder eigene Components.

Mein Vorschalg: den KeyListener nicht von Hand hinzufügen, sondern automatisch mit einer rekursiven Methode, etwa so
Code:
public void addListenerTo( Container parent, KeyListener list){
  for( int i = 0, n = parent.getComponentCount; i<n; i++ ){
    Component p = parent.getComponent( i );
    p.addKeyListener( list );
    if( p instanceof Container )
      addListenerTo( (Container)p, list );
  }
}

und nun entgehen Dir keine Components mehr. (Die Methode muss natürlich nach dem Zusammenbauen der GUI benutzt werden).

mfg Beni
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben