Java FX如果选中复选框,如何启用组合框?

Java FX如果选中复选框,如何启用组合框?,java,combobox,Java,Combobox,我是一个新的Java用户,目前正在开发一个程序,需要一种方法在选中复选框时启用组合框。除非选中该复选框,否则组合框也必须禁用 我正试图让它禁用组合框(基本上变暗了,无法使用),除非单击相应的复选框,我正试图使用if语句来完成此操作,但不确定下一步要做什么 if (chkBuildCourse.isSelected()) { instructorIsComboBox. } else if (chkNewIns

我是一个新的Java用户,目前正在开发一个程序,需要一种方法在选中复选框时启用组合框。除非选中该复选框,否则组合框也必须禁用

我正试图让它禁用组合框(基本上变暗了,无法使用),除非单击相应的复选框,我正试图使用if语句来完成此操作,但不确定下一步要做什么

        if (chkBuildCourse.isSelected())
        {
            instructorIsComboBox.
        }

        else if (chkNewInstructor.isSelected())
        {
            addInstructorComboBox.
        }
使用您的方法:

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);
    }
});
myCheckbox.selectedProperty().addListener(新的ChangeListener()){
@凌驾
public void已更改(observeValue尝试:

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()));
}}
公共类控制器实现可初始化{
@FXML
专用组合框cbb;
@FXML
私家车;
@凌驾
公共void初始化(URL位置、ResourceBundle资源){
comboBox.setOnAction(事件->复选框.setDisable(!cb.isSelected());
}}

绑定使这成为一项简单的任务…将您的ComboBox disableProperty绑定到您的CheckBox selectedProperty,并使用类似的not()将其反转

(经过编辑,希望与您的代码片段相匹配)

现在,只要未选中yourCheckBox,yourComboBox就会被禁用。 您还可以将visibleProperty、editable、managed等绑定到其他控件以减少混乱

        instructorIsComboBox.disableProperty().bind(chkBuildCourse.selectedProperty().not());
        instructorIsComboBox.editableProperty().bind(chkBuildCourse.selectedProperty());
        addInstructorComboBox.disableProperty().bind(chkNewInstructor.selectedProperty().not());
        addInstructorComboBox.editableProperty().bind(chkNewInstructor.selectedProperty());