Java 将JTree选择绑定到外部集合?
我有一个Java 将JTree选择绑定到外部集合?,java,swing,jtree,Java,Swing,Jtree,我有一个JPanel,它的作用类似于一个包含元素的画布,并且在面板旁边的JTree中列出了元素。现在,我在JPanel上实现了我的元素选择,它包含实现TreeNode接口的元素,基本上是树的节点 是否可以将树选择直接绑定到该集合,以便我可以在不编写太多代码的情况下同步这两个选择 我已经研究了TreeSelectionModel接口,但这似乎有点过头了。我希望得到的是一个内置类,在它的构造函数中接受一个集合或类似的琐碎东西 我会发布一个sscce,但我的项目目前非常不干净,而且会有大量与此无关的代
JPanel
,它的作用类似于一个包含元素的画布,并且在面板旁边的JTree
中列出了元素。现在,我在JPanel
上实现了我的元素选择,它包含实现TreeNode
接口的元素,基本上是树的节点
是否可以将树选择直接绑定到该集合,以便我可以在不编写太多代码的情况下同步这两个选择
我已经研究了TreeSelectionModel
接口,但这似乎有点过头了。我希望得到的是一个内置类,在它的构造函数中接受一个集合或类似的琐碎东西
我会发布一个sscce,但我的项目目前非常不干净,而且会有大量与此无关的代码 My
JTree
使用一个DefaultTreeModel
,它的根节点(Workspace
)是其构造函数的唯一参数。现在,我的Workspace
有一组TreeNode
s,它们代表了我的图表模型。然而,图表本身是一个基于模型形成画家的视图
图表的模型还有一个名为
SelectedElements
的集合,它根据选择添加和删除元素(通过单击或套索完成)。我认为,尽管您的JPanel中只显示了树叶,但您仍然需要将此显示基于完整的树。换句话说,您应该使用JTree的模型作为JPanel显示的基础。把它看成是同一个模型的另一个视图。然后,您也可以轻松地共享选择侦听器,甚至不需要创建任何新的TreeSelectionListener,只需使用JTree拥有的同一个即可。“…TreeSelectionModel接口,但这似乎有点过分了。”——为什么这么说?考虑创建和发布一个来更好地告诉我们你的问题。嗯,从头开始实现这个接口需要我实现一堆方法,如果我正确地理解它(虽然我很可能没有),默认的选择模型与节点的完整路径一起工作,而我只有元素(树叶)可供我使用。我想最后我不得不这样做,但我只是想知道是否有更简单的方法(或者如果我甚至理解了TreeSelectionModel
intreface的范围。当然,也有一个默认实现可能适用于您的问题,不过最好告诉我们这是否属实。我认为,虽然您只显示了树叶,但您仍然需要基于完整的树来显示。换句话说你应该使用JTrar的模型作为JPAND显示的基础。把它看作是同一个模型的另一个视图。然后你也可以共享选择的侦听器,而且很容易。我会发布一个SSCCE,但是我现在的项目是非常不干净的,会有大量的代码不是真正相关的。我的代码> JTree < /代码>使用了一个<代码>。>具有我的根节点的DefaultTreeModel(工作区
)作为它的构造函数的唯一参数。现在,我的工作区
有一个树节点
的集合,表示我的图的模型。然而,图本身是一个视图,它基于模型形成画师。图的模型还有一个名为SelectedElements
的集合,用于添加和删除元素ts基于选择(通过点击或套索完成)。@user2352164:我测试我想法的唯一方法是创建一个sscce并测试它,但我没有时间。如果您需要我的进一步帮助,您的sscce将不胜感激。