2016-03-30 22 views
0

ile nasıl kullanılır? TreeView'u link gibi oluşturuyorum ancak POJO ile kullanıyorum.JavaFx TreeView öğesi POJO

3 iç içe düğümüm var. RootNode, NodeOne ve NodeTwo. Ve aynı isim POJO.

RootNode.java

ArrayList<NodeOne> nodeone; 
SimpleStringProperty name; 

NodeOne.java

ArrayList<NodeTwo> nodetwo; 
SimpleStringProperty name; 

NodeTwo.java

SimpleStringProperty name, description; 

Ben TreeView içinde bu pojo nasıl kullanabilirim? Mümkün mü?

cevap

1

Evet ve ayrıca oldukça kolaydır. Sadece düğüm sınıflarınızın her birinin çocukları üzerinde yineleyin ve onlar için TreeItem s oluşturun.

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

Ve böyle bazı örnek veriler oluşturulan:

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

sonuç şuna benzer:

enter image description here

+0

İyi cevap, teşekkürler :) –