KeyEvent.VK_TAB im KeyListener abfragen

Diskutiere KeyEvent.VK_TAB im KeyListener abfragen im Allgemeine Java-Themen Bereich.
VfL_Freak

VfL_Freak

Hallo zusammen,
bin heute morgen auf ein kleines Problem gestoßen.

Ich habe eine Maske mit mehreren Textfeldern.
Bei einem bestimmten Feld zur Eingabe einer IP möchte ich nun im Keylistener bei Verlassen (mit ENTER oder TAB) verschiedenes prüfen rsp. auch Werte setzen und Reiter aktivieren!
Ich habe jetzt im KeyListener mit KEYTYPED, KEYPRESSED und auch KEYRELEASED rumgespielt, aber ohne Erfolg!

Java:
if( (e.getKeyCode()==KeyEvent.VK_ENTER) || (e.getKeyCode()==KeyEvent.VK_TAB) )
Während ich hier die Entertaste problemlos abfangen kann, passiert dies bei der Tabulatortaste nicht. Ein solches Keyevent kommt gar nicht an.

Ein Kollege gab mir den Tipp, mit
Java:
tfSNOMFonIP.setFocusTraversalKeysEnabled( false );
den KeyboardFocusManager abschalten, da VK_TAB dann wieder ein KeyEvent liefert!
Dies ist zwar richtig, hat aber leider zur Folge, dass ich das Textfeld über die Tastatur nicht mehr verlassen kann, sondern IMMER mit der Maus ins nächste Feld muss, was aber bei unseren Mitarbeitern nicht gut ankäme, da sie es überall anders gewohnt sind!

Gibt es hier keine andere Chance, auf die Taste VK_TAB zu reagieren, um die Eingabe im Feld zu prüfen??

Danke und Gruß
Klaus
 
T

thecain

Kannst du nicht eine FocusListener am Textfeld anhängen und so die Prüfung auslösen?
 
VfL_Freak

VfL_Freak

hmm, auch nicht ganz das, was ich möchte ...

Java:
tfSNOMFonIP.addFocusListener( new DlgKonfiguration_tfSNOMFonIP_focusAdapter(this) );
// ...
// der Adapter verzeigt zu:
public void focusLost( FocusEvent e)
{
    adaptee.tfSNOMFonIP_lostFocus( e );
}

public void tfSNOMFonIP_lostFocus( FocusEvent e ) 
{
     // steht im Textfeld "0.0.0.0" oder ist es leer, dann werden alle relevanten Elemente der GUI entfernt
      String fonIP = tfSNOMFonIP.getText();
      if( (fonIP.equals("0.0.0.0")) || (fonIP.length()==0) )
      { ... }
      else
      { ... }
}
Jetzt wird zwar VK_TAB erkannt, dafür VK_ENTER nicht mehr. Der Cursor bleibt dann im Textfeld!

VG Klaus
 
Flown

Flown

Du kannst ja glaub ich einen KeyEventDispatcher verwenden und sozusagen den "TAB" vorher abfragen, ob er gedrückt wurde in verbindung mit einem FocusListener?
 
VfL_Freak

VfL_Freak

ok, da muss ich mich erstmal einlesen, habe ich noch nie verwendet!

Danke und VG
Klaus
 
VfL_Freak

VfL_Freak

Ist leider auch nicht das Wahre!
Sobald ich einen Focuslistener drin hab, kann ich zwar meine Prüfungen durchführen, aber das Feld mit ENTER nicht mehr verlassen :-(
 
VfL_Freak

VfL_Freak

Ändert das was?
Ich kann beim Verlassen mit ENTER oder TAB den Inhalt doch immer noch nicht prüfen!
So prüfe ich dort u. a. auf '0.0.0.0' aber auch auf bestimmte andere IPs, die hier nicht eingegeben werden dürfen!
oder verstehe ich da was falsch??
 
VfL_Freak

VfL_Freak

na ja, wenn das dort verlinkte Beispiel "InputVerificationDialogDemo.java" richtig verstehe, wird dort ja schon WÄHREND der Eingabe geprüft, während ich erst NACH der Eingabe prüfen möchte ...
 
VfL_Freak

VfL_Freak

Hat leider alles nicht so geklappt wie gewollt, allerdings ist das Ganze jetzt wegen anderer Umbauten kurzfristig hinfällig geworden 🤪
 
Thema: 

KeyEvent.VK_TAB im KeyListener abfragen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben