首页 > 解决方案 > 禁用/启用所有标签和文本字段,甚至一些按钮,直到用户单击复选框

问题描述

禁用启用

这些细节是关于我的 VBox 的:

1:一个复选框

2:一个标签和自己的textField

3:一个按钮

所以我想禁用数字 2 和数字 3 ,直到 用户 点击它的复选框。

我覆盖了一个句柄方法,如下所示:

sectionDisable.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent actionEvent) {

            myLabel.setDisable(!myField.isDisable());
            myField.setDisable(!myField.isDisable());
            mybutton.setDisable(!mybutton.isDisable());
        }
    });

好的。但正如我告诉你们的那样,我首先希望禁用这些选项,我试过这样:

            myLabel.setDisable(true);
            myField.setDisable(true);
            mybutton.setDisable(true);

但它没有按我的意愿工作!并且它们一直处于禁用状态,不考虑复选框!

启用它们后,如果用户单击复选框,则它们再次禁用。

问题是我不知道如何第一次设置 disable'em。

标签: buttonjavafxlabeltextfieldhandle

解决方案


您可以使用 disableProperty() 将控件绑定到 CheckBox。


import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;

public class Controller implements Initializable {

    @FXML public Label myLabel;
    @FXML public TextField myTextField;
    @FXML public Button myButton;
    @FXML public CheckBox myCheckbox;

    @Override
    public void initialize(URL location, ResourceBundle resources)  {

        myCheckbox.setSelected(true);

        myLabel.disableProperty().bind(myCheckbox.selectedProperty());
        myTextField.disableProperty().bind(myCheckbox.selectedProperty());
        myButton.disableProperty().bind(myCheckbox.selectedProperty());
    }
}

推荐阅读