Search code examples
javafxjavafx-8treetableviewjavafx-tableview

java-fx treetableview grouping common tree items


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


Solution

  • 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