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