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将不胜感激。