如何将 JavaFx TreeView 与 POJO 一起使用
How to use JavaFx TreeView with POJO
我创建 TreeView
像这样 link 但与 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?可能吗?
是的,而且也相当容易。只需遍历每个节点 类 的子节点并为它们构建 TreeItem
s。
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;
}
结果如下所示:
我创建 TreeView
像这样 link 但与 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?可能吗?
是的,而且也相当容易。只需遍历每个节点 类 的子节点并为它们构建 TreeItem
s。
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;
}
结果如下所示: