问题标签 [treemodel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
7053 浏览

java - 使用 TreeModel+AbstractTreeModel 的示例/教程?

我有一个数据库,其中包含我想在 JTree 中显示的层次结构。

TreeModel 和/或 AbstractTreeModel 是否有一个很好的示例/教程来解释如何实现自定义树模型?我经历了很多令人头疼的事情,似乎找不到一些代码,这是一个很好的起点。

编辑:我确实找到了这个这个,但他们没有有用的评论,所以我不确定 Firexxx 方法在做什么以及它们何时被调用或何时我必须调用它们。

0 投票
1 回答
1433 浏览

java - Swing中关于“虚拟树”(自定义TreeModel)的问题

好的,我在 Swing 中找不到一个像样的示例来使用比基本功能更多的自定义 TreeModel,所以我编写了自己的(代码如下),所以我可以询问有关它的问题,而不是询问更复杂的应用程序当我了解如何编写它时,这就是我真正想写的。抱歉,这里有多个相关问题,很难在没有示例的情况下在真空中问这些 Q,我认为最好在一篇文章中提出示例,而不是分开我的问题。我的真实应用程序不是无限的,只是很大(存储在数据库中的状态),因此自定义 TreeModel 似乎很合适。

有关显示的内容,请参见第一条评论(应该在上方可见)。这是一个显示无限树的自定义 TreeModel,这在“常规”树中是不可能的,其中树中的所有节点都需要实际存在于内存中,但可以使用自定义 TreeModel,因为唯一显示/实例化的部分是用户点击的那些,本质上是有限的。:-)

我有几个杂项问题。将为我的问题 #4 提供可接受的答案,以获得最佳答案。

1) TreeModel 侦听器——我是否正确假设这是用于希望从我的 TreeModel 接收更新事件的类?(无论是我写的还是其他人写的)典型的用例是什么?

2) TreeModel.valueForPathChanged()-- 什么时候调用它,我通常会怎么做?

3)(这与 TreeCellEditor / TreeCellRenderer 有关)——我改编的示例中的行有以下调用:

这是用来干嘛的?

4)就班级组织而言——有没有更好的方法来组织这种事情?我想我应该在 TreeModel(M = MVC 中的模型)和 TreeCellEditor / TreeCellRenderer(V = 视图或 C = 控制器,我不确定)之间进行分离,但他们隐约需要相互了解,并且我不确定哪个应该包含对哪个的引用。现在我将 TreeModel 作为一个独立的对象,并且编辑器/渲染器具有对 TreeModel 的引用,因此它可以根据需要查询/改变模型。另外我想知道自定义 TreeCellEditor 和 TreeCellRenderer 是否真的应该是一个实现这两个接口的类。我的itemStateChanged()方法在CheckBoxNodeEditor看起来有点奇怪......当复选框被点击时我得到一个项目监听器事件,然后我假设这个事件来自渲染器,并切换适当的值,因为我似乎无法弄清楚如何确定是否复选框目前被选中或未选中,此复选框对象中的选择似乎是鼠标是否已单击或松开,而不是复选框状态。

可能有不止一种方法可以重组它,所以它似乎是一种更好、更模块化的方法,但现在我不确定如何做到这一点,所以任何建议都值得赞赏。

5) 显示为树层次结构的有向无环图 (DAG) -- 如果您运行应用程序,然后展开节点 1、2、4、8、16、32、64、128,您将看到第二个“1”,即实际上与第一个“1”相同的节点,因为此示例应用程序中的节点值只是Long对象。如果将第二个“1”扩展为 1,2,4,8,16,32,64,128,您现在将看到两个“21”节点。可以根据需要选中/取消选中“21”节点。但在理想情况下,当我单击其中一个时,两个“21”都会更新它们的选中状态。有没有办法自动做到这一点?或者我是否必须跟踪当前同时显示的单个节点的所有多个路径?(或者,存在的单个节点的所有路径 - 在有限 DAG 中可能,在无限 DAG 中不可能)这只是 DAG 的问题,其中有多个路径可以到达同一个节点......我必须在我的应用程序中处理这个问题。

0 投票
1 回答
279 浏览

file - 如何从文件读取或写入 GTK TreeStores?

我是新手。

如何将 TreeStore 存储到文件中?我可以通过 TreeModel 接口存储来自底层 TreeStore 的特定值,但是有没有办法“抓取”整个底层 TreeStore 作为一个值,或者我必须遍历 TreeStore,一次存储一行?

/J

0 投票
1 回答
254 浏览

sorting - How can I show a flat representation of a GtkTreeStore in a GtkTreeView?

I have a TreeStore with objects that I view and manipulate through a GtkTreeView/GtkTreeModel setup.

I also have a TreeView showing a TreeModelSort of the TreeStore, which I use for sorting on columns like name and date.

The problem is, that the sort mechanism only sorts the root nodes, even if a underlying child node has e.g. a date that is later/sooner than the roo tnodes' dates.

So, the question is if there is any way to show the objects as a List, not a tree, but keeping the references to the paths in the other TreeView?

0 投票
2 回答
447 浏览

java - 由列表支持的 TreeModel

我想从一些包含源数据的List构建一个TreeModel 。现在,有一个名为DynamicUtilTreeNode的实用程序类,可用于从数组、向量和哈希表构建树,但是......不是从列表?!当然,我可以使用 List 的 toArray() 方法,但它现在提供了 List 状态的克隆数组,因此 List 中的任何更改都不会传播到 TreeModel。

DynamicUtilTreeNode 不支持列表是否有明显的原因?有没有类似的东西可以支持列表,还是我应该自己写?

0 投票
1 回答
8748 浏览

java - Java:如何在 JTree 中显示 XML 文件

我想有一种方法可以在JTree. 我已经使用 DOM 通过实现自定义TreeModel(and TreeCellRenderer) 实现了这一点。然而,它非常笨重(很多变通方法和骇客)并且边缘相当粗糙。

有没有人知道一种方法来JTree显示用 SAX 解析的 XML 文件的内容?

谢谢!

0 投票
3 回答
4907 浏览

java - Java Swing:如何定义 JTree 如何显示“用户对象”?

使用 a 时,可以设置JTreea 的“用户对象” 。DefaultMutableTreeNode这可以是任何类型的,但为了显示它,toString()使用它的值。这不是我需要的。

如何更改用户对象的显示方式?

注意:我的用户对象必须不同于 aString才能维护树和用户对象之间的映射。

0 投票
2 回答
1056 浏览

c++ - 在 Qt 中创建复杂的树模型

我正在写一个 IRC 客户端(是的另一个)。长话短说。我正在编写一个服务器对话框,其中包含以下列表:

我有 3 个不同的列表视图,分别用于网络、通道和地址。当用户更改身份(组合框)时。网络列表视图将查找该特定身份的所有网络。加载网络后,它将自动选择第一个网络,然后加载该特定网络的所有频道和地址。

问题是我想为 1 个模型提供 3 个视图,以最小化所有内存和数据加载。这样它就更容易管理,而不是做一堆工作。

如果您查看 QColumnView ,那是完全一样的。但我不需要它在一个确切的页面上,因为视图位于完全不同的选项卡上,以便更容易通过服务器对话。

我想知道处理这种复杂性的最佳方法是什么。信息存储在 SQLite 数据库中。我已经编写了用于提取和存储它的类。只是建模是这个解决方案的痛苦部分。

0 投票
3 回答
6729 浏览

java - 存储 jtree 的状态/扩展节点以恢复状态

我正在使用 JTree。

我想知道什么是知道哪些节点在 JTree 中展开以保存其状态(即保存所有展开的路径)的最佳方法。这样,如果我调用model.reload()Jtree 就不会一直处于折叠状态,而是能够将其原始状态还原给用户,即所有展开的节点都会被展开。

0 投票
1 回答
370 浏览

gtkmm - 如何在不锁定应用程序的情况下使用大型数据集填充 Gtk::TreeModelColumn

我需要向 Gtk::TreeModelColumn 填写一个大的(可能不是那么多 - 几千个条目)数据集。如何在不锁定应用程序的情况下做到这一点。将处理放入单独的线程中是否安全?那么我必须用锁保护应用程序的哪些部分?它只是 Gtk::TreemodelColumn 类,还是它所在的 Gtk::TreeView 小部件,甚至可能是围绕框架或窗口?