当前位置: 首页 > 知识库问答 >
问题:

支持具有相同子节点的JTree节点

从智志
2023-03-14

我已经实现了一个TreeModel来调整存量数据模型,以便将其可视化为JTree。我遇到了一个问题,节点有多个相同的子(叶)节点。例如,考虑一个JTree,它的叶节点是Strings。每当父节点包含具有相同String值的子节点时,就会出现问题。这些叶节点的TreePath是相同的,作为Strings,equals()返回true。留档明确地调用这个:

JTree及其相关类广泛使用TreePath来标识TreeModel中的节点。如果一个TreeModel返回相同的对象(通过equals进行比较),在同一父对象下的两个不同索引处,则生成的TreePath对象也将被视为相等。一些实现可能会假设,如果两个树状图相等,它们标识相同的节点。如果不满足此条件,可能会导致喷漆问题和其他异常情况。换句话说,如果给定父对象的getChild返回相同的对象(由equals确定),则可能会出现问题,建议您避免这样做。

有办法吗?到目前为止,我唯一想到的(理论上——我还没有实现并验证它是否有效)是在另一个类中包装一个字符串,重写toString()以返回包装的字符串,并利用默认的equals()方法,该方法测试实际包装器对象必须相同(相同实例)才能返回true。这似乎是一次可怕的黑客攻击。任何人

编辑:我最终使用了提议的方法。对于我的应用程序,我需要支持同一个字符串的多个实例作为同一父级的子级,但没有找到其他解决方法。这很有效,但是。。。

共有1个答案

乐正心水
2023-03-14

我的建议是创建TreeNode的子类,并重写方法equals。(在树节点中保存字符串)。我认为有了它,你可以使用java的DefaultTreeModel。

 类似资料:
  • 我是 D3 的新手。因此,我正在尝试呈现一个图形,其中两个或多个孩子可以具有相同的父级。我想知道如何使链接再次定向到同一节点?我有断开的链接.. 任何帮助都是巨大的。 这是我的代码...

  • 在上面的XML中,父节点和它的一个子节点(即中心)有相同的标记名。我知道我可以在主标记的索引0处进行多个步骤的解析,然后中心标记的索引0将给出ID,中心标记的索引1将给出中心的值333,等等,但是有没有一种方法可以直接得到ID和中心的值(11,333)。

  • 我有一个XML文档,它包含一个非常复杂(对我来说)的结构,没有换行符。它有许多具有类似结构的元素: 我需要得到节点值的文本,这是节点成员的孩子也有孩子的名字与特定的文本(在这种情况下virtual_size)。也有可能存在几个类似的节点。我可以用[1]etc吗? 这让我知道了节点的名称,但是如何达到“值”节点呢?

  • 这是我想做的:将用户连接到他们观看的视频,就像用户- 我是如何做到的: CSV文件有2列,标题为用户和视频。用户下面是一个标识每个用户的数字,视频下面是一个标识每个视频的数字。一个用户对一个视频。有时用户的名字会在列表中再次出现在不同的视频中。有时视频编号会再次出现,因为它是由不同的用户观看的。 但是,这将返回关系用户在每个关系中查看1个视频。因此,每个用户和视频都有多个节点。 我想做的:创建更多

  • 我当前的firebase结构如下所示 本来我的保安看起来 这一切都很好,因为我可以通过 然而,我想给这个分支增加更多的安全性,这样用户就不能通过写操作(读取是可以的)更新前端的代码来修改其中的一些条目。我希望用户能够根据isAdmin标志修改这些条目,例如, companyId(读:auth!=null,写:isAdmin==true) 因为所有读取=auth!=无效的起初,我认为因为我能够读取所