2016-11-12 18 views
0

Ich benutze eine bearbeitbare ComboBox namens testBox mit den Artikeln testBox.getItems().addAll("A","B","C");. Ich habe auch eine auf Enter-EreignisJavaFX - Binde ButtonAction an ComboBox Item

@FXML 
public void onEnter(ActionEvent event){ 
// 
} 

Und ButtonEvents wie

@FXML 
void aButton(ActionEvent event){ 
//Do stuff 
} 
@FXML 
void bButton(ActionEvent event){ 
//Do stuff 
} 
@FXML 
void cButton(ActionEvent event){ 
//Do stuff 
} 

Wie kann ich zum Beispiel Feuer meiner Taste ‚a'-Ereignis, wenn das‘ a'-Element ausgewählt ist und die Eingabetaste gedrückt?

Bitte fügen Sie Ausschnitte :) hinzu.

Antwort

1

Sie können die Aktion festlegen, die im Event-Handler ausgeführt werden soll. Z.B. die Posten-Liste unter der Annahme nicht geändert:

List<EventHandler<ActionEvent>> handlers = Arrays.asList(
                this::aButton, 
                this::bButton, 
                this::cButton 
    ); 

@FXML 
public void onEnter(ActionEvent event){ 
    int index = testBox.getSelectionModel().getSelectedIndex(); 
    if (index >= 0) { 
     handlers.get(index).handle(event); 
    } 
} 

Sie könnte natürlich auch einen Elementtyp verwenden, die eine Eigenschaft für den Handler enthält ...

+0

Bisher funktioniert es, aber das erste Mal, dass ich ein Element auswählen , es feuert das erste Element in meiner Liste. Es feuert nur die richtige Aktion, wenn ich den Artikel aus der Dropdown-Liste auswähle. Ich muss hinzufügen, dass meine Liste Elemente während der Eingabe filtert. – Flippy