我像link一样创建TreeView
,但使用POJO。
我有3个嵌套节点。 RootNode,NodeOne和NodeTwo。同名POJO。
RootNode.java
ArrayList<NodeOne> nodeone;
SimpleStringProperty name;
NodeOne.java
ArrayList<NodeTwo> nodetwo;
SimpleStringProperty name;
NodeTwo.java
SimpleStringProperty name, description;
如何在TreeView中使用此pojo?有可能吗?
答案 0 :(得分:1)
是的,它也相当容易。只需迭代每个节点类的子节点并为它们构造TreeItem
。
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);
}
}
}
我生成了一些这样的样本数据:
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;
}
结果如下: