同时启用/禁用JavaFX中的组按钮

问题描述 投票:0回答:1

我想在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);
            }
        }
    }
    

两次尝试均无效,看来我可以通过这种方式访问​​按钮的属性,但实际上无法修改它们吗?我觉得我不了解某些功能的范围。我试图使代码尽可能简化和易读,因此,如果我遗漏了一些非常明显的内容,可能就是原因。

java javafx scenebuilder
1个回答
0
投票

这里是一个示例程序,它禁用并启用Buttons的列表。关键是在List中循环,并将setDisable值设置为适当的值。

© www.soinside.com 2019 - 2024. All rights reserved.