我正在使用scenebuilder来制作用户界面。我想在按下鼠标或触摸按钮时改变按钮的颜色。我可以为鼠标按下和屏幕触摸事件设置相同的方法,也可以为多个按钮设置相同的事件吗?就像有3个按钮,我想在鼠标按下和屏幕触摸事件中更改颜色,并且只使用一种方法。 谢谢
答案 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 pressed
和screen 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");
}