【问题标题】:Choosing between a custom tree model or default tree model when insert/removing nodes and updating tree在插入/删除节点和更新树时在自定义树模型或默认树模型之间进行选择
【发布时间】:2013-06-25 18:49:26
【问题描述】:

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

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

DefaultTreeModel 根据需要处理所有插入和删除以及树更新。我必须弄清楚这对我自己的模型是如何工作的。

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

【问题讨论】:

    标签: java swing jtree


    【解决方案1】:

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

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

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

    【讨论】:

    • +1... @Keikoku 只是为了指出看看垃圾神第一个链接(如何使用树:创建数据模型),尤其是 Dynamically Changing a Tree if我明白了这个问题
    • @DavidKroukamp:好点;更多关于问题的渲染方面。
    • 如果我可以再+1!你对实际代码的洞察力让我质疑我真的认为我知道多少:)
    猜你喜欢
    • 2018-02-23
    • 2011-11-23
    • 2012-04-03
    • 2021-09-03
    • 2019-04-16
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多