java-fx treetableview grouping common tree items

428 Views Asked by At

I have a treetableview that i am using to display list of employees with organisation as root item. Now i want to group tree items based on the department they work in. For example: currently i am displaying as mentioned below:

current

However i would like to have something as mentioned below i.e., the employees grouped by their department, keeping in the view that employee name and department are part of same object Employee.java:

needed

1

There are 1 best solutions below

1
On BEST ANSWER

Here is the solution you should use:

Instead of Object use your model.

    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