簡體   English   中英

Java FX 如果選擇了 CheckBox,如何啟用 ComboBox?

[英]Java FX How to Enable a ComboBox if a CheckBox is selected?

我是一個新的 Java 用戶,我目前正在開發一個程序,並且需要一種在選擇 CheckBox 時啟用 ComboBox 的方法。 除非選中 CheckBox,否則還必須禁用 ComboBox。

我正在嘗試使用它,因此 ComboBox 被禁用(並且基本上變暗並且無法使用),除非單擊相應的 CheckBox,並且我正在嘗試使用 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()”方法返回 boolean 並且 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-boolean-

綁定使這成為一項簡單的任務...將 yourComboBox disableProperty 綁定到 yourCheckBox selectedProperty 並使用 not() 像這樣將其反轉

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

(編輯以希望與您的代碼片段匹配)

現在,只要未選擇 yourCheckBox,就會禁用 yourComboBox。 您還可以將 visibleProperty、editable、managed 等綁定到其他控件,以減少鍋爐混亂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM