Удалить связь между проверенными состояниями родителя и потомков в ControlsFX CheckTreeView - PullRequest
0 голосов
/ 03 декабря 2018

Я использую CheckTreeView для представления иерархической структуры.Текущее поведение проверки заключается в том, что если я проверяю / снимаю флажок с родительского элемента, все его дочерние элементы автоматически получат флажок / снятый флажок.Если я отмечаю / снимаю отметку со всех детей, родитель также автоматически проверяется / снимается.Есть ли способ убрать это поведение?Я хочу иметь возможность проверить все дочерние элементы, не изменяя проверенное состояние родительского элемента на true.Я также хочу, чтобы иметь возможность проверить родителей и некоторые или нет детей, но не все из них.Короче говоря, я хочу, чтобы флажки были полностью независимы от других.Я приложил отредактированный снимок экрана, чтобы продемонстрировать то, что я описываю

This modified screenshot is what I want to achieve

Пример кода для построения дерева:

@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"));
}

1 Ответ

0 голосов
/ 03 декабря 2018

По умолчанию CheckBoxTreeItem s являются зависимыми.

Чтобы изменить значение по умолчанию, используйте вызов 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

...