2016-12-20 3 views
0

J'ai un TreeView composant et le contenu de celui-ci comme ceci:obtenir le chemin de l'élément de noeud d'arbre sélectionné plein JavaFX

  • racine
    • Item1
    • item2
    • Dossier1
      • Dossier2
        • item101
    • item3

Je veux qu'il revienne le chemin/root/Dossier1/Dossier2/item101 lorsqu'il est sélectionné afin que je puisse le mettre dans le téléchargement commander. Ci-dessous l'exemple que j'ai travaillé jusqu'à présent (mal fait pour tester), le problème est qu'il ne fonctionne pas dans les dossiers, seulement dans la racine. J'utilise CloudRail API pour Java.

List<CloudMetaData> data = cs.getChildren("/"); 
String path=""; 
String selectedName = treeView.getSelectionModel().getSelectedItem().getValue() ; 
      System.out.println(selectedName); 
for (CloudMetaData cmd : data) { 
       cache.put(cmd.getPath(), cmd); 
       TreeItem<String> item = new TreeItem<>(cmd.getName()); 
          if(selectedName.equals(cmd.getName())){ 
           path=cmd.getPath(); 
          } 
} 
System.out.println(path); 

Répondre

3

Vous pouvez faire:

StringBuilder pathBuilder = new StringBuilder(); 
for (TreeItem<String> item = treeView.getSelectionModel().getSelectedItem(); 
    item != null ; item = item.getParent()) { 

    pathBuilder.insert(0, item.getValue()); 
    pathBuilder.insert(0, "/"); 
} 
String path = pathBuilder.toString(); 
+0

travaillé comme un charme. Je vous remercie!! – KnightHood