java-fx treetableview группирует общие элементы дерева

У меня есть древовидное представление, которое я использую для отображения списка сотрудников с организацией в качестве корневого элемента. Теперь я хочу сгруппировать элементы дерева на основе отдела, в котором они работают. Например: в настоящее время я отображаю, как указано ниже:

текущий

Однако я хотел бы иметь что-то, как указано ниже, то есть сотрудников, сгруппированных по их отделам, учитывая, что имя сотрудника и отдел являются частью одного и того же объекта Employee.java:

требуется


person zero_cool    schedule 04.01.2018    source источник
comment
Любая помощь в этом отношении высоко ценится.   -  person zero_cool    schedule 04.01.2018
comment
Вы пытались использовать второй уровень в TreeTableView, который должен работать точно так же, как вы хотели бы.   -  person Sunflame    schedule 04.01.2018
comment
Вам удалось сгруппировать сотрудников по компаниям. Что мешает вам использовать тот же подход для группировки сотрудников каждой компании по отделам?   -  person fabian    schedule 04.01.2018
comment
@fabian Я создал компанию как root, теперь я хочу, чтобы промежуточные корни, то есть отдел, были root, поэтому я не мог пройти через это. Таким образом, в моем случае компания является статическим корневым элементом, тогда как сотрудники являются динамическими.   -  person zero_cool    schedule 04.01.2018
comment
@sunflame, не могли бы вы предоставить более подробную информацию о том, как использовать второй уровень в дереве таблиц. Это было бы большим подспорьем. Заранее спасибо!   -  person zero_cool    schedule 04.01.2018


Ответы (1)


Вот решение, которое вы должны использовать:

Вместо Object используйте свою модель.

    TreeTableView<Object> treeTableView = new TreeTableView<>();

    TreeItem<Object> root = new TreeItem<>();
    // if you need more roots you can disable the root and use the first level children as roots otherwise ignore this line.
    treeTableView.setShowRoot(false);
    treeTableView.setRoot(root);

    // first level children
    TreeItem<Object> firstLevelChild1 = new TreeItem<>();
    TreeItem<Object> firstLevelChild2 = new TreeItem<>();

    root.getChildren().add(firstLevelChild1);
    root.getChildren().add(firstLevelChild2);

    // second level children

    TreeItem<Object> secondLevelChild1 = new TreeItem<>();
    TreeItem<Object> secondLevelChild2 = new TreeItem<>();

    firstLevelChild1.getChildren().add(secondLevelChild1);
    firstLevelChild2.getChildren().add(secondLevelChild2);

    // third level children

    TreeItem<Object> thirdLevelChild1 = new TreeItem<>();
    TreeItem<Object> thirdLevelChild2 = new TreeItem<>();

    secondLevelChild2.getChildren().add(thirdLevelChild1);
    secondLevelChild2.getChildren().add(thirdLevelChild2);

    // .... and so on you can define as many levels you want
person Sunflame    schedule 06.01.2018
comment
Я заставил его работать, сделав его динамическим дочерним элементом второго уровня, однако я могу частично принять ответ Sunflame. так прими это. То есть вместо того, чтобы сделать сотрудника моим основным корневым родителем, теперь я делаю отдел своим родителем второго уровня и скрываю корневой элемент сотрудника. - person zero_cool; 09.01.2018