java - 在插入/删除节点和更新树时在自定义树模型或默认树模型之间进行选择

标签 java swing jtree

我有一组用于命令行应用程序的节点,我想在其上放置一个 GUI。我想直观地显示树并使用 JTree。我已经编写了自己的树模型,它实现了 TreeModel 接口(interface),并且树按预期呈现。

但现在我希望能够插入或删除节点。目前,每当我执行插入或删除操作时,我只是重新绘制树,这是一个糟糕的解决方案,尤其是在有数千个节点的情况下。

DefaultTreeModel 根据需要处理所有的插入和删除以及树更新。我必须弄清楚它如何适用于我自己的模型。

使用自定义树模型的唯一原因是我可以使用现有的节点对象。这个理由“足够好”来实现自定义模型,还是我应该寻找一种方法来使用默认的可变树节点对象?

最佳答案

How to Use Trees: Creating a Data Model 中所述, “TreeModel 接口(interface)接受任何类型的对象作为树节点。”您的自定义 TreeModel 可以有效地反射(reflect)您的“预先存在的分层数据结构”。

作为具体示例,请查看 FileTreeModel , 引用 herehere .唯一缺少的是 TreeModelListener 管道,其说明可在 EventListenerList 中找到API。

附录:关于渲染效率,JTree 使用 flyweight pattern只渲染可见节点。在您的 TreeModel 中触发适当的 TreeModelEvent 将允许列表树对模型中的更改使用react。 DefaultTreeModel 是一个有用的指南。

关于java - 在插入/删除节点和更新树时在自定义树模型或默认树模型之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17305251/

相关文章:

java - JEdi​​torPane.setText 显示页面底部

java - 用于 Swing 的回流标签小部件

java - 如何在 Mac 上安装 IntelliJ? (MacOS 塞拉利昂)

java 卡住我的计算机并需要硬重启

java - JOptionPane 取消按钮

java - 将 'expand' 按钮添加到没有子节点的 JTree 节点?

java - 使用 List<? 时出错扩展 DefaultMutableTreeNodel>

Java Swing - JTree - 超过 2 个链接分支上的 setModel 图形错误

java - JSF 与 RMI 教程

java - 如何使用 Spring MVC 返回 XML 文件?