JTree: Может кто-нибудь понять, что не так с этим Кодексом? - PullRequest
0 голосов
/ 20 октября 2011

Я занимаюсь разработкой небольшого настольного приложения в Net Beans. Я перетаскиваю JTree на JFrame, и теперь я хочу заполнить иерархию узлов этого JTree динамически. Для этого я написал метод, который возвращает мне DefaultMutableTreeNode объект. Теперь я снова создаю дерево с этим объектом, но дерево по-прежнему показывает старые (по умолчанию) узлы:

DefaultMutableTreeNode root = createJTreeNodes();
jTree1 = new JTree(root);
jTree1.repaint();
jTree1.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);

Может ли кто-нибудь подсказать, что мне нужно изменить, чтобы динамически заполнить дерево?

Ответы [ 2 ]

3 голосов
/ 21 октября 2011

Может ли кто-нибудь подсказать, что мне нужно изменить, чтобы динамически заполнить дерево?

Несколько вариантов:

DefaultTreeModel model = (DefaultTreeModel)tree.getModel();
DefaultMutableTreeNode root = (DefaultMutableTreeNode)model.getRoot();
root.add(new DefaultMutableTreeNode("another_child"));
model.reload(root);

или

DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot();
model.insertNodeInto(new DefaultMutableTreeNode("another_child"), root, root.getChildCount());
0 голосов
/ 19 июня 2012

Сначала необходимо удалить все узлы в JTree, которые по умолчанию добавляются сетевыми компонентами.

DefaultTreeModel model=(DefaultTreeModel)jTree1.getModel();
model.setRoot(null);

Теперь создайте новый корень и добавьте все элементы, которые вы хотите, и используйте приведенный выше код для установки нового корня.

...