Получить полный путь к выбранному элементу узла дерева в JavaFX
У меня есть компонент TreeView и его содержимое, как это:
- корень
- item1
- item2
- Folder1
- Folder2
- item101
- Folder2
- item3
Я хочу, чтобы он возвращал путь /root/Folder1/Folder2/item101 при выборе, чтобы я мог указать это в команде загрузки.
Ниже приведен пример, который я разработал до сих пор (плохо сделан для целей тестирования), проблема в том, что он не работает внутри папок, только в корне. Я использую CloudRail API для 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);
2 ответа
Решение
Ты можешь сделать:
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();
вы также можете использовать это
private String GetTreeElementPath(TreeItem<String> item) {
StringBuilder pathBuilder = new StringBuilder();
for (TreeItem<String> parent = item.getParent();
item != null ; item = item.getParent()) {
pathBuilder.insert(0, item.getValue());
pathBuilder.insert(0, "/");
}
String path = pathBuilder.toString();
return path;
}