Я использую DefaultTreeModel
, заполненный переопределением DefaultMutableTreeNode
, которое поддерживает опциональное изменение строки отображения узла в дереве.Как показано в приведенном ниже коде, в моей форме я заполняю дерево новыми узлами, создавая их в отдельном классе, а затем передавая их через класс-обертку для моего основного типа данных.Существует процедура создания нового переопределенного DefaultMutableTreeNode
, добавления к нему дочерних элементов (каждый AccessPoint
представлен узлом с несколькими дочерними узлами), а затем сохранения его для последующего использования в пользовательском интерфейсе.
.Когда я впервые добавляю узел таким образом, он прекрасно работает.Любой последующий узел, добавленный со следующим кодом, фактически сохраняется в DefaultTreeModel
, но JTree
не обновляется новыми узлами.
Почему JTree
не получаетзаполнено после добавления первого потомка?
private void populateAccessPointTreeModel(AccessPointDataWrapper wrapper) {
//the pre-created DefaultMutableTreeNode subclass instance is
// stored in the wrapper
DefaultMutableTreeNode accessPointNode =
wrapper.getAccessPointTreeNode();
//this line updates the accessPointTree with the new node (I've looked at the
// value in debug mode, and it does in fact add the node
((DefaultMutableTreeNode) accessPointTree.getRoot()).add(accessPointNode);
//unrelated logic happens down here...
}
Я могу включить код, где я создаю узел, если это необходимо, но я не думаю, что это проблема.