Видя, как вы устанавливаете новую модель при редактировании документа, похоже, что у вас все еще не работает уведомление, верно? Если это так, вам не нужен какой-либо специальный метод в JTree - вам нужна хорошо управляемая реализация TreeModel; -)
Ради интереса я посмотрел DocumentTreeModel: это очень маленькая обложка поверх DefaultTreeModel без какой-либо поддержки, чтобы связать изменения в Document с изменениями в DocumentTreeModel. Тот факт, что Leaf- / BranchTreeNode реализует только TreeNode (в отличие от дальнейшего продвижения и реализации MutableTreeNode), даже отключает вспомогательные методы моделей для вставки / удаления узла. Короткая история: вся тяжелая работа остается за вами.
По сути, вы должны уведомить treeModel о любых изменениях в базовом документе. Что-то вроде (псевдокод):
DocNode newElement = document.addElement(...)
DocNode parentElement = newElement.getParent();
// walk the tree until you find the TreeNode which represents the DocNode
BranchTreeNode root = treeModel.getRoot();
BranchTreeNode parentNode = null;
forEach (root.child)
if child.getXMLNode().equals(parentElement)
parentNode = child;
// now find the childNode which corresponds to the new element
forEach (parentNode.child)
if (parentNode.child.getXMLNode().equals(newElement)
childNode = child;
// now notify the treeModel that an insertion has happened
treeModel.nodesWhereInserted(parentNode, childNode ...)
Хм ... на вашем месте я бы искал более удобную реализацию, не могу поверить, что где-то есть другая реализация?
CU
Жанетт