我有一个JPanel
,就像一个带有元素的画布,以及面板旁边JTree
中列出的元素。现在,我在JPanel
上实现了我的元素选择,它包含实现TreeNode
接口的元素,并且基本上是树的节点。
是否可以直接将树选择绑定到该集合,以便我可以同步两个选择而无需编写太多代码?
我调查了TreeSelectionModel
界面,但这看起来有点矫枉过正。我希望得到的是一个内置类,它在其构造函数中采用了一个集合,或者类似的东西。
我会发布一个sscce,但此时我的项目是非常不干净的,并且会有大量的代码并不真正相关。
我的JTree
使用具有我的根节点(DefaultTreeModel
)的Workspace
作为其构造函数的唯一参数。现在,我的Workspace
有一个代表我的图表模型的TreeNode
个集合。但是,图表本身是一个基于模型形成画家的视图。
图表的模型还有一个名为SelectedElements
的集合,它根据选择添加和删除元素(通过点击或套索完成)。
答案 0 :(得分:1)
我认为虽然您的JPanel中只显示了叶子,但仍需要将此显示基于完整的树。换句话说,您应该使用JTree的模型作为JPanel显示的基础。考虑它只是同一模型的另一个视图。然后你也可以轻松地共享选择监听器,甚至不需要创建任何新的TreeSelectionListener,而只需使用与JTree相同的那个。