如何在Javafx中的树tableview列中禁用未选中的复选框

时间:2017-08-29 23:53:49

标签: checkbox javafx binding

我有一个treetable列,我正在添加复选框,如下所示

isPrimary.setCellFactory(new Callback<TreeTableColumn<String, Boolean>, TreeTableCell<String, Boolean>>() {
            @Override
            public TreeTableCell<String, Boolean> call(TreeTableColumn<String, Boolean> param) {
                    return new LiveCheckBoxTreeTableCell();
            }
        });

我正在编写自己的复选框,如下所示

public class LiveCheckBoxTreeTableCell extends TreeTableCell<String,Boolean>{
    private final CheckBox checkBox = new CheckBox();
       private ObservableList<CheckBox> selectedCheckBoxes = FXCollections.observableArrayList();
        private ObservableList<CheckBox> unselectedCheckBoxes = FXCollections.observableArrayList();

    @Override
        public void updateItem(Boolean item, boolean empty) {
            super.updateItem(item, empty);

            if (empty) {
                setGraphic(null);
            } else{

                setGraphic(checkBox);
                 if (checkBox.isSelected()) {
                     selectedCheckBoxes.add(checkBox);
                 } else {
                     unselectedCheckBoxes.add(checkBox);
                 }
                checkBox.selectedProperty().addListener(new ChangeListener<Boolean>() {
                      @Override
                      public void changed(ObservableValue<? extends Boolean> observableValue, Boolean aBoolean, Boolean aBoolean2) {
                          if (aBoolean2) {
                                unselectedCheckBoxes.remove(checkBox);
                                selectedCheckBoxes.add(checkBox);
                            } else {
                                selectedCheckBoxes.remove(checkBox);
                                unselectedCheckBoxes.add(checkBox);
                            }

                      }
                    });


            }
        }
    }

当我勾选一个复选框时,应禁用isPrimary列中的其他复选框。 但是我检查并取消选中的复选框将被禁用。其他人将继续启用。 任何Javafx请帮我禁用未选中的复选框,并在取消选中任何选中的复选框时启用所有复选框。

0 个答案:

没有答案