我有一个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请帮我禁用未选中的复选框,并在取消选中任何选中的复选框时启用所有复选框。