使用相同的方法为鼠标按下和触摸按下事件的多个按钮

时间:2014-09-21 11:50:55

标签: javafx scenebuilder

我正在使用scenebuilder来制作用户界面。我想在按下鼠标或触摸按钮时改变按钮的颜色。我可以为鼠标按下和屏幕触摸事件设置相同的方法,也可以为多个按钮设置相同的事件吗?就像有3个按钮,我想在鼠标按下和屏幕触摸事件中更改颜色,并且只使用一种方法。 谢谢

1 个答案:

答案 0 :(得分: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 pressedscreen touched events都会触发。{/ p>

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