2015-12-01 23 views
0

我有一个简单的JTree。
我通过setSelectionPath()在代码中设置了它的选定节点。Mark treeNode as selected(Swing)

一切工作正常,但我想要的是,相应的节点(我的路径的结束)突出显示,如果用户用鼠标点击它,以便在树本身也有一个视觉反馈以指示选择哪个节点。

问候乌鸦

编辑:
如何我希望它看起来(就像用鼠标 Properly highlighted (after selection with mouse)

它目前看起来如何通过程序选择节点后,选择一个节点时看起来 Current result after selecting node via program

+0

你使用:myTree.setSelectionPath(new TreePath(treeModel.getPathToRoot(treeNode)))? –

+0

是的,我尝试过,但它没有从我目前的做法有任何区别... – Raven

+0

考虑提供一个[可运行示例](https://stackoverflow.com/help/mcve),它演示你的问题。这不是代码转储,而是您正在做的事情的一个例子,它突出了您遇到的问题。这将导致更少的混淆和更好的反应 – MadProgrammer

回答

0

,我发现我的问题:
选择在树位于窗格当我刷新我的树的内容。
但不是只更新它的节点,我重新创建了完整的模型,这就是问题所在。
我使用的路径是旧模型的路径,这就是在新树中无法正确选择路径的原因。 我切换到更新模型的方法,现在setSelectionPath()具有我想要的效果。

1

聚焦并展开所选节点:

  1. jtree.setScrollsOnExpand(true)

    确定 树是否可以滚动显示以前隐藏的子节点。
    如果此属性为true(默认值), 节点展开树时可以使用滚动使 节点的后代的最大可能数目可见。

  2. jtree.setExpandsSelectedPaths(true)
    允许配置JTree的自动扩展选择的路径。
    如果你想手动管理这一点,
    可以使用jtree.setExpandedState(TreePath path, boolean state)方法

+0

谢谢,但这不是我正在寻找的效果...我会更新我的答案,让自己更清楚 – Raven

+0

@Raven在应用setSelectionPath()后,getSelectionRows()会返回什么? –

+0

它返回null – Raven