我有一個存在於User對象之外的TreeView。樹視圖表示用戶的層次結構:展開包含所選項目的TreeView(父)節點
- Master1
- Super1
- SUPER2
- User1的
- 用戶2
- Super3
- 用戶3
- Super4
- Master2
- ...
每TreeItem當TreeView控件初始化已展開。但是,可能會在FXML加載時從另一個FXML文件傳遞一個TreeItem對象。例如:用戶3已經穿過:
selectedUserTreeItem = (TreeItem<User>) currentNavigation.getPassthroughObject(); //this is the User3 TreeItem
我嘗試使用遞歸函數從selecterUserTreeItem
if (selectedUserTreeItem != null) {
expandTreeView(selectedUserTreeItem);
}
tvUsers.setRoot(rootItem);
此展開所有的父節點是我到目前爲止有:
private void expandTreeView(TreeItem<User> selectedItem) {
if (selectedItem != null) {
System.out.println(selectedItem);
if (selectedItem.isLeaf() == false) {
selectedItem.setExpanded(true);
}
TreeItem<User> parent = selectedItem.getParent();
expandTreeView(parent);
} else {
System.out.println("null");
}
}
我認爲它必須做的事情,該函數是一個無效的功能,它應該返回一個TreeItem對象,我想,但由於某種原因,我沒有成功做到這一點。
難道有人指着我正確的方向嗎?
您好Jurgen,這是相同的結果,但我發現與上述組合的解決方案! 'selectedItem'不是來自新啓動的TreeView的TreeItem,因爲它是從另一個FXML文件傳遞的。我必須通過啓動的TreeView循環來將TreeItem從循環鏈接到selectedItem。一旦完成,該方法就成爲一種魅力。非常感謝您的時間和聖誕快樂! – Perneel