问题标签 [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 投票
3 回答
2480 浏览

java - Java:将 TreeModel、TableModel 序列化为 JSON,反之亦然?

在客户端,用户指定的输入创建唯一的 TreeModel 和 TableModel。

这需要序列化为 JSON 以存储在 MongoDB 上(直接存储 JSON 文档)。

JSON 需要被解析回 TreeModel 或 TableModel,它们将在客户端软件上再次呈现。

任何可以促进这一点的图书馆或现有代码?

0 投票
1 回答
748 浏览

java - 如何递归删除JTree中的所有节点?

在由JTree组成的 中DefaultMutableTreeNodes,您将如何从给定节点及其所有祖先开始遍历和删除?

它应该从最深的级别开始删除,向上备份到给定的节点。给定的起始节点应该是最后要删除的东西。

0 投票
1 回答
1150 浏览

java - 如何克隆 java TreeModel?

我想要 2 TreeModels:第二个的根是第TreeModel一个的节点TreeModel(因此,第二个TreeModel是第一个的子树TreeModel)。

我认为我可以通过克隆 thisTreeModel并更改根目录来轻松地做到这一点。但是,我不知道是否有一种简单的克隆方法TreeModel

0 投票
2 回答
5798 浏览

java - 为什么当 TreeModel 添加新节点时我的 JTree 没有更新?

我正在使用一个DefaultTreeModel填充了它的覆盖,DefaultMutableTreeNode它支持可选地更改树中节点的显示字符串。如下面的代码所示,在我的表单中,我通过在单独的类中创建新节点然后通过我的主要数据类型的包装类将它们传递给新节点来填充树。该过程是创建一个新的覆盖DefaultMutableTreeNode,向其添加子节点(每个AccessPoint节点由一个具有多个子节点的节点表示),然后将其存储以供以后在 UI 中使用。

我第一次以这种方式添加节点时,效果很好。使用以下代码添加的任何后续节点实际上都存储在 中DefaultTreeModel,但JTree并未使用新节点进行更新。

为什么JTree在添加第一个孩子后没有填充?

如有必要,我可以在其中包含创建节点的代码,但我认为这不是问题。

0 投票
2 回答
1060 浏览

java - Java自定义树模型更新问题

这是树的结构:

根-分支--叶子

我用于 TreeModel DefaultTreeModel 并且我的对象实现了 TreeNode 接口

叶是一些对象:

分支有叶子列表:

root 是分支的容器:

当我添加新叶子时,我的树不会更新,当我添加叶子并使用我的根对象创建新的 DefaultTreeModel 时,它会更新。我看 DefaultMutableTreeNode 实现,插入孩子时没有任何事件触发......我做错了什么?之前,我尝试实现 TreeModel 接口,它看起来比为三个类实现 TreeNode 接口要好得多,但结果相似。我也读过 GlazedLists,但我不喜欢他们的树概念。对我来说,最好的是实现 TreeModel 接口概念,但是当模型中的一些内部列表添加新元素时如何更新模型?...

0 投票
1 回答
152 浏览

c++ - GTKMM set_value_vfunc 函数是谎言吗?

我一直在尝试修改继承自TreeModel和的自定义树视图的内容TreeSortable。然而,虚函数set_value_impl只包含一个断言。当我试图寻找示例实现时,它们都引用了 GTKMM 网站,上面写着“您可能只需通过调用来实现它set_value_vfunc()”。

我在 GTKMM 的任何地方都没有发现这样的功能。

TreeModel在尝试修改树视图的内容时,这里有没有人与 GTKMM发生冲突?

0 投票
1 回答
60980 浏览

java - 从 JTree 添加和删除节点

我有一个非常基本的JTree. 由于我赶时间,TreeModel如果不需要,我宁愿不使用。我写了一个SSCCE来暴露这个问题:

有时我会添加一个节点。其他时候我删除它们。当我 pushAdd时,一个节点被正确添加。当我 pushRemove时,它应该删除节点,但它没有。此外,如果我尝试添加多个节点,则树只保留我添加的第一个节点。

我为 写了一个更新方法JTree,我首先擦除所有挂在根节点上的节点,然后我看看我必须创建哪些节点和子节点。

TreeModel除了不使用 a对树进行操作之外,我在这里做错了什么?

0 投票
3 回答
2303 浏览

java - 带有 JTree 的 Java Swing 应用程序 - MVC 设计:在架构上将 TreeModel 对象放置在哪里?

请原谅这个问题的冗长,因为在写它时我正在尝试思考我的设计问题!

我继承了一个 Swing 应用程序,它需要重新构建到 RMI 应用程序中。客户要求 Swing GUI 在本地运行并通过 RMI 与远程服务器进程通信,该进程包含一个 Controller 类,该类在 EventListeners 的刺激下将调用定向到业务逻辑和后端数据库持久性部分,从而弥合了 Swing 客户端之间的差距和控制器。

我将实现 MVC 设计,以允许开发新的视图以与服务器一起使用。

目前,Swing 客户端 GUI 包含一个使用 DefaultTreeModel 填充的 JTree。该模型是使用 DefaultMutableTreeNode 对象构建的,这些对象通过位于这些对象和我的数据源之间的业务对象映射器填充业务对象状态。

我理解 Client 和 TreeModel 的链接方式没有问题:我已经建立了 TreeModelListener 来查看 TreeModel 的更改。如果 TreeModel 对象发生变化,我通过调用它的 treeHasChanged() 方法来重绘 JTree。

但是,我很难想象什么进程会刺激 TreeModel,以便用数据库中的最新数据重新填充其内容,这反过来又会调用我的 TreeModelListener 来更新我的 GUI 的 Jtree。谁应该“拥有”TreeModel?它应该是构成控制器状态的模型中的一个类吗?GUI 的 EventListeners 在控制器中的操作是否应该进行硬调用以运行例程以刷新 TreeModel?

或者,TreeModel 是 GUI 小部件的扩展,在这种情况下它是视图组件?如果是这样,调用该对象状态刷新的正确方式是什么?

我可能应该注意到,最近几天我一直在考虑观察者和听众,所以我可能对试图在观察者开火后调用行为发生感到内疚。

你的,很迷茫!

0 投票
2 回答
4056 浏览

java - 在不重新绘制树的情况下更新 JTree 中的 ImageIcon?

基本上我private string status="OK"UserObject()a中编辑一个属性DefaultTreeNode()

我有一个 CustomRenderer implements DefaultCellRenderer,它通过呈现 的“OK”属性来设置UserObject图标TreeNode

最初,当我选择一个节点时,图标会发生变化。我正在使用Tree.revalidate()& Tree.repaint(),并且正在反映更改。

但是,我不确定这是否非常有效。这样做的正确方法是什么?我试过做TreeModel.nodesChanged(new DefaultMutableTreeNode(myUserObject)),但TreeNodeChanged event不会触发。

那么,每次更改 TreeNode 的用户对象以查看图形更新时,我是否坚持使用重新绘制整个树?

0 投票
1 回答
2859 浏览

java - JTree 如何以编程方式更改节点?

我第一次尝试使用和理解 JTrees、TreeModels、TreeModes 等。我想使用 Tree 来表示本地设备附近的蓝牙设备。我的蓝牙设备是树的根节点,根节点的任何第一个后代都将是附近的蓝牙设备。

我将我的树设置为如下开始(为简洁起见缩短了代码):

当 JTree 最初显示时,根节点读取“本地蓝牙设备”。但是,一旦我初始化蓝牙堆栈,我希望根节点显示我的本地蓝牙设备的“友好名称”和地址。

我遇到的问题是如何更改根节点?我尝试了多种方法,包括为 topTreeNode 创建一个新的 DefaultMutableTreeNode() 但 JTree 不会立即重新绘制。我应该实现一个监听器吗?