首页 > 解决方案 > 如何禁用组合框中的项目?

问题描述

我有两个组合框的一个 ObservableList。当用户选择其中一个项目时,我希望在另一个框中禁用所选项目,反之亦然。在下面的代码中,我坚持这样做:

public class Controller implements Initializable {

    ObservableList<String> items = FXCollections.observableArrayList("first", "second", "third", "forth", "fifth");

    @FXML
    private ComboBox<String> first;

    @FXML
    private ComboBox<String> second;

    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {
        first.getItems().addAll(items);
        second.getItems().addAll(items);

        first.setCellFactory(new Callback<>() {
            @Override
            public ListCell<String> call(ListView<String> stringListView) {
                return new ListCell<>() {
                    @Override
                    protected void updateItem(String s, boolean b) {
                        super.updateItem(s, b);
                        if (b)
                            setText(null);
                        else {
                            if (second.getValue() != null) {
                                if (second.getValue().equals(s)) {
                                    setText(s);
                                    setDisable(true);
                                } else setText(s);
                            }
                        }
                    }
                };
            }
        });
    }
}

如何禁用在“第二个”组合框中选择的“第一个”组合框中的项目?

标签: javajavafxcombobox

解决方案


推荐阅读