java - 最后修改区展开Jtree?

标签 java swing jtree dom4j treemodel

我正在使用 dom4j 从 dom4j 文档创建一个 DocumentTreeModel。

我在 JScrollPane 中显示这个 DocumentTreeModel。

我有一个按钮可以将新节点添加到 dom4j 文档,并重新创建 DocumentTreeModel

我正在使用 getPathForRow 但这似乎非常有限。我需要能够处理多个树深度。基本上是在寻找像 tree.getPathOfLastModifiedChildrensParent()

这样的东西
onAddNewNodeButtonClickEventFired {
   dom4jdocument.addElement( "1" );                               
   tree.setModel(new DocumentTreeModel(dom4jdocument));                                
   tree.expandPath(tree.getPathForRow(1));                             
}  

基本上,我试图让 Jtree 在每次编辑文档时重新绘制文档。

最佳答案

每当您编辑文档时看到您设置了一个新模型,看起来您仍然没有运行通知,对吧?如果是这样,您不需要 JTree 上的任何特殊方法 - 您需要的是 TreeModel 的行为良好的实现;-)

只是为了好玩,我查看了 DocumentTreeModel:这是 DefaultTreeModel 之上的一个非常小的封面,不支持将文档中的更改粘合到 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 ...)

嗯......在你的鞋子里,我会寻找一个更舒适的实现,不敢相信在某个地方还有另一个实现?

联通 珍妮特

关于java - 最后修改区展开Jtree?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5579580/

相关文章:

java - Java中将Map数据列表分组到嵌套HashMap中

java - 在运行时重新加载 JTree

java - swing - 触发树单元格编辑事件

java - 从 JFileChooser 获取 file.properties 并在 ResourceBundle 上使用它

java - 需要加速的装箱算法

java - 如何检测鼠标是否已向右或向左移动(而不是拖动)?

java - 在卡片布局中切换卡片时 JMenuBar 不显示

java - 如何在主类中扩展JFrame和JPanel?

java - 在 JTree 中,只有处理树才会扩展,但不会扩展树选择 - Java Swing

java - 是否可以在没有JCO的情况下连接SAP服务器和JAVA?