我希望多个 JTree
(都具有非常相似的内容)同步选择的节点(当每棵树中存在相同的节点时)。
目前,我正在通过向每棵树添加一个 TreeSelectionListener
并在其他树上调用 setSelectedPath
(如果 getSelectedPaths
不包含路径)。
但是,我已经看到这会导致无限循环,其中每棵树都重复选择不同的节点(我不知道如何重现这一点,但我在拖动节点时看到了它)。
似乎没有一种方法可以在不触发树选择监听器的情况下设置所选路径,而且我宁愿不尝试删除监听器。
我正在考虑在树之间共享 TreeSelectionModel
的可能性,但考虑到 DefaultTreeSelectionModel
的大小,这看起来需要大量工作。
还有其他方法可以达到同样的效果吗?
最佳答案
添加一个标志 isAPI。当您以编程方式选择树中的路径时设置该标志,并在设置路径后重置它。
在监听器中,只需检查 isAPI==true 并从监听器返回。
关于java - 同步多个 JTree 对象中的选定节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13926949/