2016-11-12 2 views
0

Я использую редактируемый ComboBox под названием testBox с элементами testBox.getItems().addAll("A","B","C");. я также иметь на Enter-EventJavaFX - Bind ButtonAction to ComboBox Item

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

И ButtonEvents как

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

Как я огонь, например, моя кнопка «а'-событие, когда» выбран а'-пункт и введите нажата?

Пожалуйста, добавьте фрагменты :).

ответ

1

Вы можете определить действие, которое должно быть выполнено в обработчике событий. Например. предполагая, что список пунктов не изменяется:

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); 
    } 
} 

Можно, конечно, использовать также тип элемента, который содержит свойство для обработчика ...

+0

До сих пор она работает, но в первый раз я выбираю пункт , он запускает первый элемент в моем списке. Он только запускает правильное действие, если я выберу элемент из выпадающего списка. Я должен добавить, что мой список фильтрует элементы во время набора. – Flippy