[英]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);
}
});
綁定使這成為一項簡單的任務...將 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.