2014-09-21 3 views
1

Я использую scriptbuilder для создания пользовательского интерфейса. Я хочу изменить цвет кнопок при нажатии мыши или при нажатии кнопки. Могу ли я установить один и тот же метод для нажатых и нажатых кнопок, а также настроить те же события для нескольких кнопок? Например, есть 3 кнопки, и я хочу изменить их цвет при нажатой мыши, а экран коснулся событий и использует только один метод для всех. Спасибо, используя тот же метод для нескольких кнопок для нажатых и нажатых нажатий кнопок

ответ

1

Допустим, у вас есть три кнопки

Button button1 = new Button(); 
Button button2 = new Button(); 
Button button3 = new Button(); 

Создать метод говоря

private void handleButtonAction(ActionEvent event) { 
    // Button was clicked, change color 
    ((Button)event.getTarget).setStyle("-fx-background-color:PINK"); 
} 

Все кнопки имеют setOnAction(), который обстрелял как mouse pressed и screen touched events.

JavaDoc говорит

действие этой кнопки, которая вызывается всякий раз, когда кнопка срабатывает. Это может быть связано с нажатием кнопки мыши с помощью мыши или прикосновением или нажатием клавиши, или если разработчик программным образом вызывает метод fire().

Использование:

button1.setOnAction(this::handleButtonAction); 
button2.setOnAction(this::handleButtonAction); 
button3.setOnAction(this::handleButtonAction); 

Если вы используете FXML

Вы можете определить одно действие для всех кнопок:

<Button id="button1" onAction="#handleButtonAction"/> 
<Button id="button2" onAction="#handleButtonAction"/> 
<Button id="button3" onAction="#handleButtonAction"/> 

Внутри контроллера:

@FXML 
private void handleButtonAction(ActionEvent event) { 
    // Button was clicked, change color 
    ((Button)event.getTarget).setStyle("-fx-background-color:PINK"); 
} 
Смежные вопросы