问题标签 [defaulttreemodel]

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 回答
1249 浏览

java - 同时展开和折叠两棵结构相同的树

我想修改此链接中给出的 Swing 示例中的标准 JTree -> Dynamic Tree Example 该应用程序的屏幕截图如下: DynamicTreeDemo

在此处输入图像描述

我想用这个结构来维护两棵树,它们都具有完全相同的结构。当通过鼠标单击折叠/展开任何一个时,我应该能够同时折叠和展开!
此外,当用户从任一树中选择一个节点时,另一棵树中的相应节点也应突出显示。
一棵树可能包含文件/文件夹作为节点,而另一棵树可能包含创建时间作为节点。

我可以在每个 DynamicTree 对象中仅使用一个 Jtree 对象来使其工作吗?(请参阅示例以了解这些对象是什么)有没有办法让 Jtree 只存储一个对象,其中包含来自每棵树的相应节点的数据,但将这些数据显示在单独的树上?

目前,我正在使用两个 Jtree,并且可以通过将两个父级和两个子级作为 add 函数的输入来添加节点,并将相应的子级添加到相应的父级。
但是,在删除/展开/折叠函数中,我需要从两棵树中删除/展开/折叠两个相应的节点。我该怎么做呢?

我是 java swing 新手,但不是 java 编程新手。所以请说明需要Jswing知识的部分。

提前致谢。

0 投票
1 回答
1974 浏览

java - JTree 编辑根节点?

我正在尝试创建一个稍后可以编辑的 JTree。到目前为止,我有以下代码可以按预期生成带有根节点的树。但是,当单击按钮(触发动作侦听器)时,它会在根节点下添加另一个节点。我宁愿它做的是修改根节点。有没有办法做到这一点?我尝试改变各种论点;像 0 到 -1、(MutableTreeNode) treeModel.getRoot() 到 (MutableTreeNode) treeModel 等。

感谢您对此的任何帮助。

0 投票
1 回答
79 浏览

java - JTree 节点未从 DefaultTreeModel 中移除

我创建了一个自定义 DefaultMutableTreeNode。现在我想在树上执行拖放操作,它工作正常,但我想在被删除后删除节点。但问题是我可以将节点插入模型但不能从模型中删除。

0 投票
1 回答
269 浏览

java - insertNodeInto 函数仅适用于第一次插入(适用于叶节点)

假设我正在编写一个可编辑的树文件系统并为我的“添加子”按钮添加一个动作监听器。也就是说,一旦我在树中选择了一个节点并单击“添加子节点”按钮。应该有一个新节点“New”成为它的子节点,如图 1 所示。

(抱歉,我没有 10 名发布图片的声誉。但也许你可以运行下面的完整代码。)

但问题是我的听众只在第一次插入时工作,这意味着它只适用于叶节点。

当我尝试将新节点添加到“事物”节点时,树不会改变。虽然数字没有改变,但 .childCount() 函数 return 的返回值确实根据控制台显示的内容而改变。

对于那些想要运行程序的人,完整的代码在这里:

0 投票
1 回答
1677 浏览

java - 如何在文件系统内容的 JTree 中插入和显示新节点

我已经成功创建了一个小程序,它将在 JTree 中显示文件系统内容。它仅按设计显示文件夹和纯文本文件。我现在想在创建树时向树中添加一个文件夹。示例程序将显示树并创建一个文件夹,但它不会为刚刚创建的文件夹插入新节点。创建文件夹并让树显示新文件夹时,如何将节点插入树中?

非常感谢!

此类创建并显示树。

这个类是树模型。

最后一个类是树单元渲染器。

0 投票
0 回答
339 浏览

java - 如何递归遍历TreePath的所有节点

我正在尝试创建一种通过路径的所有节点的方法。它将用于 JTree,节点将是文件和文件夹。所以它也必须通过文件夹。

这是我的代码:

主要设置:

搜索方法:

所以在我的方法中,我绑定到指定节点是否是一个文件夹,然后通过它并遵循相同的过程。否则获取下一个节点,依此类推。但它不起作用。

任何想法?

0 投票
1 回答
153 浏览

java - 共享模型(相关部分)的 JTree/多个 Jtree 的静态过滤

我有一个带有两个顶级孩子的 Jtree 说AB。目前,代码设计为在同一个面板中显示它们,因为它们是共享 JTree 的一部分。我想要做的是,将 A 和 Binto 分开两个不同的面板。

现在,Jtree 有一个复杂的更新系统,并且有 A 成员自动进入 B 的方式,反之亦然,等等,我真的不想有两个单独的 JTree。我知道我可以使用以下方式访问相关数据:

但是有没有办法在一个面板中显示A及其子子项,而在另一个面板中显示 B?

如果不是,我想我将不得不求助于创建myTree_AmyTree_B来跟踪myTree。这样做的最简洁和最有效的方法是什么?

更新

所以我选择创建两个独立的树。然而,我有一个小问题,当我在我的两棵新树中使用 'root_A.add(A)' 和 'root_B.add(B)' 时,其中root_Aroot_B分别是myTreeAmyTreeB的根,A 和 B 是分离的从myTree的根,我不能再将myTreeA,B的元素挂钩到原始的myTree并调用相关例程。有什么方法可以告诉myTreeAmyTreeB在不删除其父级的情况下跟踪 A 和 B?换句话说,我可以在树之间共享模型/节点吗?

0 投票
0 回答
37 浏览

java - 解决自定义对象之间的依赖关系

我有一个List<Object>并且每个对象都有整数“id”和整数“依赖”参数。然后该列表进行一些处理,以便不依赖于任何人的对象将首先进行处理,然后下一组对象继续进行。

我已经使用拓扑排序和邻接列表来实现这一点,它可以很好地完成这项工作,但是我被告知要使用树(TreeModel),因为以前的方法很难理解。独立对象将位于根级别,依赖于它的对象将是其子对象,依此类推。因此,根级别的所有对象都将先行,然后是级别 2 的对象,然后是 3...

我对如何进行实施感到有些困惑。我想我会从 开始List<TreeModel<Object>>,所以每个索引代表一棵树,然后相应地形成树。在解析时,我将首先解析所有根级别,然后是 2nd 级别,然后是 3rd .. 虽然我认为有一种优雅的方式。

任何提示/帮助将不胜感激。谢谢。

0 投票
1 回答
527 浏览

java - 为什么 TreeModel 重新加载后节点选择无法正常工作?

我有一个使用JTree. 我希望隐藏树的一些节点,所以我实现了两个DefaultTreeModels,一个包含每个节点,一个过滤后只包含应该显示的节点。后者被设置为实际模型。

在某些时候,我必须更改过滤的节点,当我这样做时,树中的项目会正确更新,但它们的行为是错误的。节点在被选中时不会突出显示(即使它们确实被选中)并且用户不能再双击展开节点,他们必须单击小“+”按钮。

下面是我的代码的概括,我的自定义类中的两个方法扩展了JTree.

updateFilter当过滤器需要更新时被调用。 populateFilteredNode递归地填充我的过滤模型的根节点。为简单起见,filteredRoot是一个类成员变量(类型为DefaultMutableTreeNode)并且是过滤模型的根。fullModel并且filteredModel是类型DefaultTreeModel

如果有人有类似经历或知道为什么所选节点不会突出显示,请告诉我。或者如果有更好的方法来完成过滤。或者,如果更多代码有助于提供答案。

0 投票
1 回答
231 浏览

java - 使用 FileTree 作为 TreeModel 扩展特定的 JTree 节点

我正在尝试构建基于 JTree 的文件浏览器并尝试使用setSelectionPathwith导航到特定路径DefaultMutableTreeNode

我已经从这里参考了代码

我刚刚包括isLeaf单独检查。到目前为止,它还没有扩展路径。

只有,我expandRow能够实现节点扩展。

我应该怎么做才能让它工作setSelectionPath