У меня есть TreeView, существующий из объектов User. TreeView представляет иерархию пользователей:expand TreeView (родительские) узлы, которые содержат выбранный элемент
- master1
- super1
- Super2
- User1
- Пользователь2
- Super3
- User3
- Super4
- Master2
- ...
Каждый TreeItem свернут, когда TreeView инициализируется. Однако может случиться так, что при загрузке FXML объект TreeItem передается из другого файла FXML. Например: User3 был принят через:
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");
}
}
Я думаю, что он должен что-то сделать с тем, что функция является функцией void, и она должна возвращать объект TreeItem, я полагаю, но по какой-то причине мне это не удается.
Может ли кто-нибудь указать мне в правильном направлении?
Привет, Юрген, это был тот же результат, но я нашел решение в сочетании с вышеизложенным! 'SelectedItem' не является TreeItem из недавно инициированного TreeView, поскольку он передается из другого файла FXML. Мне нужно пройти через инициированный TreeView, чтобы связать TreeItem от цикла до выбранногоItem. Как только это будет сделано, метод работает как прелесть. Большое спасибо за ваше время и Рождеством! – Perneel