0

I create TreeView like as this link but using with POJO.

I have 3 nested node. RootNode, NodeOne and NodeTwo. And same name POJO.

RootNode.java

ArrayList<NodeOne> nodeone;
SimpleStringProperty name;

NodeOne.java

ArrayList<NodeTwo> nodetwo;
SimpleStringProperty name;

NodeTwo.java

SimpleStringProperty name, description;

How can I use this pojo inside in TreeView? Is it possible?

Farid Valiyev
  • 203
  • 5
  • 20

1 Answers1

1

Yes, and it's fairly easy as well. Just iterate over the children of every of your node classes and construct TreeItems for them.

public void initData(RootNode data)
{
    TreeItem<String> rootItem = new TreeItem<>();
    rootItem.valueProperty().bind(data.nameProperty());
    treeView.setRoot(rootItem);
    for (NodeOne nodeOne : data.getNodes())
    {
        TreeItem<String> oneItem = new TreeItem<>();
        oneItem.valueProperty().bind(nodeOne.nameProperty());
        rootItem.getChildren().add(oneItem);
        for (NodeTwo nodeTwo : nodeOne.getNodes())
        {
            TreeItem<String> twoItem = new TreeItem<>();
            twoItem.valueProperty().bind(nodeTwo.nameProperty().concat(": ").concat(nodeTwo.descriptionProperty()));
            oneItem.getChildren().add(twoItem);
        }
    }
}

And I generated some sample data like this:

private RootNode makeData()
{
    RootNode rootNode = new RootNode();
    rootNode.setName("Root");
    for (int i = 0; i < 20; i++)
    {
        NodeOne nodeOne = new NodeOne();
        nodeOne.setName("One Node 0b" + Integer.toBinaryString(i));
        rootNode.getNodes().add(nodeOne);
        for (int j = 0; j < 20; j++)
        {
            NodeTwo nodeTwo = new NodeTwo();
            nodeTwo.setDescription("Another node #" + j);
            nodeTwo.setName("0x" + Integer.toHexString(j));
            nodeOne.getNodes().add(nodeTwo);
        }
    }
    return rootNode;
}

The result looks like this:

enter image description here

randers
  • 5,031
  • 5
  • 37
  • 64