2009-09-02 3 views
0

У меня есть JTree, уровень 5 уровней, 0, 1, 2, 3, 4 уровня. Меня интересует информационный бюллетень 1 уровня, значение или индекс. можно ли сразу получить информацию уровня 1, когда выбор ниже уровня 1?Выбор JTree

+0

Хм ... вы пытаетесь найти узел уровня 1 * над * выбранным элементом? –

+0

Возможно, я описал это неправильно. Я думал, что уровень 0 - это корень, а уровень 4 - лист. то, что мне нужно, если выбор пользователя находится на уровне 2, 3 или 4, я хочу немедленно получить информацию соответствующего уровня 1. – 5YrsLaterDBA

ответ

0

Если ваши узлы уровня 1 являются статическими, вы можете просто сохранить ссылку на них в своем древовидном классе. Это даст вам прямой доступ к этим узлам, и вы получите доступную информацию о производном классе, если вы ее использовали.

Существует также DefaultTreeModel.getChild (...), который позволит вам получить узел по его индексу под корневым узлом.

Если вы пытаетесь «дотянуть» дерево до узла уровня 1, вы можете попробовать getPathToRoot на древовидной модели. Узел уровня 1 (только под root) будет результатом [1].

+0

@ user131273 Вы, безусловно, не должны статически ссылаться на узлы дерева. Если вы используете «DefaultMutableTreeNode» или аналогичную реализацию, где узлы имеют ссылки на дочерние узлы, то все ваши экземпляры дерева будут работать на одних и тех же узлах, и вы получите узлы из дерева A, смешанные с узлами в дереве B Просто FYI. –

+0

@Shakedown Да, это правда. Я имел в виду статику, как в английском слове, означающем «не собираюсь меняться», а не в смысле языка Java, «разделяемого во всех экземплярах». Плохой выбор слова с моей стороны! :-) –

0

Если вы заинтересованы в выбранном использовании узла уровня 1 метод

JTree.getSelectionPath()

, чтобы получить выбранный TreePath затем проверить, если TreePath возвращается имеет по крайней мере 2 элемента (первая является корень, второй выбранный уровень 1 узел) с

TreePath.getPathCount()

Если возвращение> = 2, то использовать

TreePath.getPathComponent (1)

для получения выбранного уровня 1 узла. (0 индекс является корнем)

Смежные вопросы