2014-09-19 6 views
0

У меня есть класс fxml и controller. В классе контроллера у меня есть метод someAction(), а в fxml я установил #someAction как onAction для некоторой кнопки. Теперь я хочу создать кнопку не в fxml, а динамически из java-кода, как button = new Button(). Я все еще загружаю fxml, и у меня все еще есть этот контроллер с методом someAction(). Как установить someAction() как onAction для моей кнопки? Из кода Java я нашел только setOnAction(EventHandler<ActionEvent> eh). Есть ли способ указать onAction в стиле, подобном fxml, просто указывая имя метода в классе контроллера?JavaFX динамически добавляет кнопки

ответ

2

Одним из подходов может быть:

private EventHandler<ActionEvent> yourHandler = new EventHandler<>() { 
    public void handle(ActionEvent event) { 
     // your logic 
    } 
}; 

затем

button.setOnAction(yourHandler); 

и

public void someAction(ActionEvent event) { 
    yourHandler.handle(null); 
} 

Или таким же образом, определить метод бизнес-логики и называют это в двух различные обработчики событий событий.

+0

Второй подход звучит более практично :) – ItachiUchiha

+0

@ItachiUchiha да, вы правы. Я просто хочу показать здесь использование обработчика событий. –

Смежные вопросы