Построение JTree с бесконечной глубиной - PullRequest
2 голосов
/ 10 мая 2011

Если я не знаю, какова глубина jTree, какую логику я могу использовать для создания JTree.У меня есть таблица категорий в моей базе данных с родительской категорией и дочерним элементом внутри дочернего элемента и так далее.Я хочу построить JTree с этими данными.Можете ли вы дать мне несколько идей о том, как это сделать?Ниже приведена структура моей базы данных.
enter image description here

Ответы [ 2 ]

2 голосов
/ 10 мая 2011

Вызов JTree.addTreeExpansionListener позволяет добавить TreeExpansionListener, который предоставляет событие с именем TreeExpansionEvent, когда вызывается один из его методов. Позвонив по номеру getPath, вы узнаете, где вы находитесь.

Кстати, если вы строите дерево на лету, вам нужно иметь + ручки для начала. Это означает, что когда вы помещаете узел в дерево, вы должны поместить под ним дочерний узел. Когда вы получите событие раскрытия дерева, посмотрите, является ли этот дочерний узел одним из этих поддельных узлов, и если это так, удалите его и замените его реальными дочерними (на основе запроса db).

Что такое поддельный узел? Просто класс, который реализует TreeNode, который каким-то образом отличается от ваших обычных TreeNodes, и вы можете легко определить, что это.

2 голосов
/ 10 мая 2011

Реализуйте свой собственный TreeNode, который заполняет свой список дочерних узлов ad-hoc (по запросу БД) при открытии узла (т.е. при первом вызове children() или getChildCount()) вместо построения дереваиз DefaultMutableTreeNode с заранее.

Также см. Java tuorial по этой теме.В разделе Как загружать детей Lazily показан другой подход с использованием TreeWillExpandListener s и подробного раздела здесь

...