【问题标题】:Syncing selected nodes in multiple JTree objects同步多个 JTree 对象中的选定节点
【发布时间】:2012-12-18 05:39:37
【问题描述】:

我希望有几个JTrees(都具有非常相似的内容)使其选定的节点同步(当每棵树中存在相同的节点时)。

目前我正在通过向每棵树添加TreeSelectionListener 并在其他树上调用setSelectedPath 来执行此操作(如果getSelectedPaths 不包含路径)。

但是,我已经看到这会导致无限循环,其中每棵树都在重复选择不同的节点(我不确定如何重现这一点,但我在拖动节点时看到了它)。

似乎没有办法在不触发树选择侦听器的情况下设置选定路径,我宁愿不走尝试删除侦听器的路径。

我正在考虑在树之间共享TreeSelectionModel 的可能性,但考虑到DefaultTreeSelectionModel 的大小,这看起来需要做很多工作。

还有其他方法可以达到同样的效果吗?

【问题讨论】:

    标签: java swing jtree


    【解决方案1】:

    添加一个标志 isAPI。当您以编程方式选择树中的路径时设置标志,并在设置路径后重置它。

    在侦听器中只需检查 isAPI==true 是否并从侦听器返回。

    【讨论】:

    • 我最初没有考虑这一点,因为我在调用 SwingUtilities2.invokeLater 时调用了 setSelectionPath,事实证明这是不必要的,因为 TreeSelectionListener 将始终在 GUI 事件调度线程上调用。
    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2014-04-13
    • 2012-07-15
    • 2015-10-06
    • 1970-01-01
    • 2014-11-22
    相关资源
    最近更新 更多