我是一名新的Java用户,目前正在开发一个程序,需要一种在选中复选框时启用组合框的方法。除非选中了复选框,否则还必须禁用组合框。
我正在尝试将其设置为禁用组合框(基本上变暗,无法使用(,除非单击相应的复选框。我正在尝试使用if语句来完成此操作,但不确定下一步该怎么做。
if (chkBuildCourse.isSelected())
{
instructorIsComboBox.
}
else if (chkNewInstructor.isSelected())
{
addInstructorComboBox.
}
试试看:
public class Controller implements Initializable {
@FXML
private ComboBox<?> cbb;
@FXML
private CheckBox cb;
@Override
public void initialize(URL location, ResourceBundle resources) {
comboBox.setOnAction(event -> checkBox.setDisable(!cb.isSelected()));
}}
使用您的方法:
instructorIsComboBox.setEditable(chkBuildCourse.isSelected());
您不需要if语句,因为"isSelected(("方法返回一个布尔值,而setEditable则取一个。
使用监听器
myCheckbox.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldVal, Boolean newVal) {
myComboBox.setEditable(newVal);
}
});
https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ComboBoxBase.html#setEditable-布尔值-
绑定使这项任务变得简单。。。将您的组合框disableProperty绑定到您的复选框selectedProperty,并用类似的not((反转
instructorIsComboBox.disableProperty().bind(chkBuildCourse.selectedProperty().not());
instructorIsComboBox.editableProperty().bind(chkBuildCourse.selectedProperty());
addInstructorComboBox.disableProperty().bind(chkNewInstructor.selectedProperty().not());
addInstructorComboBox.editableProperty().bind(chkNewInstructor.selectedProperty());
(经过编辑,有望与您的代码片段相匹配(
现在,只要没有选择您的复选框,您的组合框就会被禁用。您还可以将visibleProperty、editable、managed等绑定到其他控件,以减少锅炉混乱。