禁用/启用所有标签和文本字段,甚至一些按钮,直到用户单击复选框
Disable / Enable all the labels and textFields and even some buttons until the user click a checkBox
Disable/Enable
这些细节是关于我的 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
您可以使用 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());
}
}
好的!
现在工作很好!我改变了看法,所以我使用 setSelected();对于我的复选框
现在不需要这段代码了:
myLabel.setDisable(true);
myField.setDisable(true);
mybutton.setDisable(true);
之后:
之前:
Disable/Enable
这些细节是关于我的 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
您可以使用 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());
}
}
好的!
现在工作很好!我改变了看法,所以我使用 setSelected();对于我的复选框
现在不需要这段代码了:
myLabel.setDisable(true);
myField.setDisable(true);
mybutton.setDisable(true);
之后:
之前: