我想在JavaFX中禁用多个相同“类型”的按钮。例如,我有多个用于不同操作的取消按钮,但是我想同时启用/禁用所有按钮,但是看来我无法在LinkedList中访问它们。
[我尝试使用网上论坛
@FXML
Button cancelBtn1;
@FXML
Button cancelBtn2;
@FXML
Button startBtn;
Group cancelBtnGroup = new Group();
public class DemoController {
public void initialize() {
cancelBtnGroup.getChildren().add(cancelBtn1);
cancelBtnGroup.getChildren().add(cancelBtn2);
startBtn.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
someOperation();
someOtherOperation();
}
});
}
public void someOperation() { // My first attempt
cancelBtnGroup.setDisable(true);
}
public void someOtherOperation() { // My second attempt
for(Node btn : cancelBtnGroup.getChildren()) {
btn.setDisable(true);
}
}
}
我也尝试了LinkedList
@FXML
Button cancelBtn1;
@FXML
Button cancelBtn2;
@FXML
Button startBtn;
Group cancelBtnGroup = new Group();
public class DemoController {
public void initialize() {
cancelBtnGroup.add(cancelBtn1);
cancelBtnGroup.add(cancelBtn2);
startBtn.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
anotherOperation();
}
});
}
public void anotherOperation() { // My third attempt
for(Node btn : cancelBtnGroup) {
btn.setDisable(true);
}
}
}
两次尝试均无效,看来我可以通过这种方式访问按钮的属性,但实际上无法修改它们吗?我觉得我不了解某些功能的范围。我试图使代码尽可能简化和易读,因此,如果我遗漏了一些非常明显的内容,可能就是原因。
这里是一个示例程序,它禁用并启用Buttons
的列表。关键是在List
中循环,并将setDisable
值设置为适当的值。