KeyEvent.VK_TAB im KeyListener abfragen

VfL_Freak

Top Contributor
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
 
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
 
Du kannst ja glaub ich einen KeyEventDispatcher verwenden und sozusagen den "TAB" vorher abfragen, ob er gedrückt wurde in verbindung mit einem FocusListener?
 
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 :-(
 
Ä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??
 
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 ...
 
Hat leider alles nicht so geklappt wie gewollt, allerdings ist das Ganze jetzt wegen anderer Umbauten kurzfristig hinfällig geworden 🤪
 

Zurück
Oben