我希望有几个JTree
(所有内容非常相似)的所选节点同步(当每个树中存在相同的节点时)。
目前,我正在通过向每个树添加TreeSelectionListener
并在其他树上调用setSelectedPath
(如果getSelectedPaths
不包含路径)来执行此操作。< / p>
然而,我已经看到这会导致无限循环,其中每棵树都在重复选择不同的节点(我不知道如何重现这一点,但我在拖动节点时已经看过它了。)
似乎没有办法在不触发树选择监听器的情况下设置所选路径,我宁愿不去尝试删除监听器。
我正在考虑在树之间共享TreeSelectionModel
的可能性,但考虑到DefaultTreeSelectionModel
的大小,这看起来很多。
还有其他方法可以达到相同的效果吗?
答案 0 :(得分:2)
添加标志isAPI。以编程方式选择树中的路径并在设置路径后重置它时设置标志。
在侦听器中,只需检查isAPI ==是否为true并从侦听器返回。