我的任务是在单击javafx中的3个按钮时调用单个方法,该特定方法执行的代码只是更改单击按钮的颜色。
根据场景我在fxml中创建了3个按钮,在我的控制器里面我定义了一个方法。我的任务代码就是
myButton.setStyle("-fx-background-color:green");
现在请您告诉我,如何获得点击的特定按钮ID。 myButton 是点击按钮的 fx:id 。
提前致谢。
答案 0 :(得分:1)
您可以执行以下操作:
@FXML
public void handleActionEvent(ActionEvent event) {
Object source = event.getSource();
if (source.equals(buttonA)) {
buttonA.setStyle("-fx-background-color:red");
} else if (source.equals(buttonB)) {
buttonB.setStyle("-fx-background-color:green");
} else if (source.equals(buttonC)) {
buttonC.setStyle("-fx-background-color:blue");
}
}
控制器中有三个按钮:
@FXML
private Button buttonA;
@FXML
private Button buttonB;
@FXML
private Button buttonC;
每个按钮都需要fxml中的一致id
和onAction="#handleActionEvent"
。
答案 1 :(得分:0)
fx:id
永远不会传递给控制器。相反,它们用于在通过FXMLLoader加载fxml时将控件的实例注入控制器。
当你的fxml有一个控件
时<Button fx:id="myButton">
您需要确保在控制器内创建的Button引用应具有相同的名称。如果没有,Button的实例化将失败。
public class MyController {
@FXML
private Button myButton; // name should be same as the fx:id
...
}
同样,如果你想在按钮上添加一个动作,你可以在FXML上添加它,
<Button fx:id="myButton" onAction="#myAction">
这将在控制器中查找具有相同名称的方法。每当您单击该按钮时,它将调用控制器中定义的方法。
public class MyController {
@FXML
private Button myButton; // name should be same as the fx:id
...
public void myAction(ActionEvent event) {
// Do Something
}
}