我有一个在几个 TreeViews 之间共享的处理程序。
在处理程序中,我可以访问 TreeItem 实例,是否有(简单)方法来确定它所属的 TreeView?
目前,我依靠外部变量来记录“当前活动的”TreeView,但这会使代码变得混乱,而且可能也相当脆弱。有替代方案吗?
我认为目前不可能,至少在 JavaFX 2.2 上是不可能的。查看 TreeView 源代码(可在此处获得),该TreeView.setRoot(TreeItem<T> root)
方法只是设置 TreeView 的根属性,而没有在根项上设置一些对 TreeView 的引用。在这种情况下,从根元素开始,没有对插入它的 TreeView 的引用。
因此,即使使用 可以从更深的项目到达根项目TreeItem.getParent()
,也无法到达具有该项目的 TreeView。