2017-02-17 5 views
2

Ich möchte den Fokus ändern, wenn ein Benutzer die EINGABETASTE in einer Combobox drückt. Erstens habe ich einen Action-Listener verwendet, aber dieser wird auch ausgelöst, wenn ein Benutzer seinen Wert ändert, indem er die Pfeiltaste nach oben oder unten drückt oder den Wert im Dropdown-Menü auswählt.JavaFX Combobox: Handeltaste für Eingabe gedrückt

Daher dachte ich, dass ich das durch die Registrierung eines Key-Handlers lösen könnte. Aber es funktioniert nicht für die EINGABETASTE.

Gibt es eine Möglichkeit, mein Problem zu lösen?

Edit:

Leider dachte ich, dass mein Intro genug ist.

So habe ich wenig Form mit einigen Textfeldern und einer ComboBox. Um die Benutzerfreundlichkeit zu erhöhen, muss der Benutzer lediglich die Eingabetaste drücken, um zum nächsten Feld zu wechseln. Dies funktioniert gut für Textfelder:

textfield.setOnAction(e -> { 
     cmbTax.requestFocus(); 
}); 

Aber wenn ich ein Action-Listener registrieren, wäre es nicht meine Anforderungen erfüllen, weil es immer dann ausgelöst wird, wenn der Wert geändert wird:

cmbTax.setOnAction(e->textfield2.requestFocus()); 

Also habe ich versucht, ein Schlüssel Hörer, aber es reagierte nicht auf ENTER, weil es intern gehandhabt wird, bevor meine Zuhörer genannt würde:

cmbTax.getEditor().setOnKeyPressed(this::handleKeyPressedForComboBox); 

Grüße

+1

Beitrag [MCVE], zeigen, was Sie bisher getan haben und descibe wo Sie Problem haben. – MBec

Antwort

1

Dies funktioniert für mich:

setOnKeyPressed(e -> { 
    if (e.getCode() == KeyCode.ENTER) { 
     System.out.println("TEST"); 
    } 
}); 

In Ihrem Fall:

cmbTax.setOnKeyPressed(this::handleKeyPressedForComboBox); 
+0

Danke, das löst mein Problem. Aber ich denke, es ist ein sehr seltsames Verhalten. Ich habe den Key-Listener im Editor registriert, weil ich auch auf das Drücken der Pfeiltaste hören möchte und das hat nicht funktioniert. Aber egal, ich habe es am Ende zweimal registriert. – marky8264

Verwandte Themen