JTree: Может кто-нибудь понять, что не так с этим Кодексом?

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

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

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

2 ответа

Решение

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

Пара разных вариантов:

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());

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

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

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

Другие вопросы по тегам