2016-03-30 29 views
0

linkのようにTreeViewを作成しますが、POJOを使用します。JavaFx 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; 

どのように私は、ツリービューで内部このPOJOを使用できますか?出来ますか?

答えて

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; 
} 

結果は次のようになります。

enter image description here

+0

良い答え、感謝を:) –

関連する問題