在 ControlsFX CheckTreeView 中删除 parent 和 children 的检查状态之间的连接
Remove connection between checked states of parent and children in ControlsFX CheckTreeView
我正在使用 CheckTreeView 来表示层次结构。当前的检查行为是如果我 check/uncheck a parent,它的所有 children 将自动得到 check/unchecked。如果我 check/uncheck 所有 children parent 也会自动获得 checked/unchecked。有什么办法可以消除这种行为?我希望能够在不将 parent 的选中状态更改为 true 的情况下检查所有 children。我还希望能够检查 parent 和一些或没有 children 但不是全部。简而言之,我希望复选框完全独立于其他复选框。我已附上经过编辑的屏幕截图来展示我所描述的内容
构建树的示例代码:
@FXML
private void initialize() {
CheckBoxTreeItem<String> parent1 = new CheckBoxTreeItem<>("Parent 1");
addChildren(parent1);
CheckBoxTreeItem<String> parent2 = new CheckBoxTreeItem<>("Parent 2");
addChildren(parent2);
CheckBoxTreeItem<String> root = new CheckBoxTreeItem<>("Root");
root.getChildren().addAll(parent1, parent2);
ctv.setRoot(root);
}
private void addChildren(TreeItem<String> parent) {
parent.getChildren().add( new CheckBoxTreeItem<>("Child 1"));
parent.getChildren().add( new CheckBoxTreeItem<>("Child 2"));
}
默认情况下 CheckBoxTreeItem
是相关的。
要更改默认值,请使用 setIndependent()
调用:
parent1.setIndependent(true);
parent2.setIndependent(true);
儿童也一样:
CheckBoxTreeItem<String> child1 = new CheckBoxTreeItem<>("Child 1");
child1.setIndependent(true);
parent.getChildren().add(child1);
CheckBoxTreeItem<String> child2 = new CheckBoxTreeItem<>("Child 2");
child2.setIndependent(true);
parent.getChildren().add(child2);
参见 API: JavaFX Javadocs
我正在使用 CheckTreeView 来表示层次结构。当前的检查行为是如果我 check/uncheck a parent,它的所有 children 将自动得到 check/unchecked。如果我 check/uncheck 所有 children parent 也会自动获得 checked/unchecked。有什么办法可以消除这种行为?我希望能够在不将 parent 的选中状态更改为 true 的情况下检查所有 children。我还希望能够检查 parent 和一些或没有 children 但不是全部。简而言之,我希望复选框完全独立于其他复选框。我已附上经过编辑的屏幕截图来展示我所描述的内容
构建树的示例代码:
@FXML
private void initialize() {
CheckBoxTreeItem<String> parent1 = new CheckBoxTreeItem<>("Parent 1");
addChildren(parent1);
CheckBoxTreeItem<String> parent2 = new CheckBoxTreeItem<>("Parent 2");
addChildren(parent2);
CheckBoxTreeItem<String> root = new CheckBoxTreeItem<>("Root");
root.getChildren().addAll(parent1, parent2);
ctv.setRoot(root);
}
private void addChildren(TreeItem<String> parent) {
parent.getChildren().add( new CheckBoxTreeItem<>("Child 1"));
parent.getChildren().add( new CheckBoxTreeItem<>("Child 2"));
}
默认情况下 CheckBoxTreeItem
是相关的。
要更改默认值,请使用 setIndependent()
调用:
parent1.setIndependent(true);
parent2.setIndependent(true);
儿童也一样:
CheckBoxTreeItem<String> child1 = new CheckBoxTreeItem<>("Child 1");
child1.setIndependent(true);
parent.getChildren().add(child1);
CheckBoxTreeItem<String> child2 = new CheckBoxTreeItem<>("Child 2");
child2.setIndependent(true);
parent.getChildren().add(child2);
参见 API: JavaFX Javadocs