首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用treeNode本身突出显示Jtree中的treeNode

使用treeNode本身突出显示Jtree中的treeNode
EN

Stack Overflow用户
提问于 2012-01-17 14:51:56
回答 3查看 5.7K关注 0票数 3

我有一个JTree (myTree),在另一个班级里,我有一个DefaultMutableTreeNode,它是从myTree上学来的。

在特定的函数中,我希望JTree突出显示节点。

我试过:

代码语言:javascript
复制
myTree.setSelectionPath(new TreePath(treeNode));

但从视觉上看什么也没发生。

有什么想法吗?

更新:

我还有另一个JTable,它是基于所选的treeNode in myTree呈现的。该表正在正确地更新。只是myTree拒绝在视觉上进行更新。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-17 14:58:58

您需要使用节点的实际树路径。不仅仅是TreePath的一个实例:

代码语言:javascript
复制
myTree.setSelectionPath(new TreePath(treeModel.getPathToRoot(treeNode)));

另外,javadoc说:

如果路径的任何组件是隐藏的(在折叠的节点下),并且getExpandsSelectedPaths是真的,那么它是公开的(变为可视的)。

所以,确保getExpandsSelectedPaths是真的。

票数 4
EN

Stack Overflow用户

发布于 2012-01-17 15:22:50

从java中,我们得到了下面对TreePath的描述:

表示到节点的路径。TreePath是从TreeModel中获得的对象数组。数组的元素是有序的,因此根总是数组的第一个元素(索引0)。

因此,必须从一个数组构造一个有效的TreePath,该数组包括来自根节点和要选择的节点的路径上的所有节点。

票数 4
EN

Stack Overflow用户

发布于 2013-10-28 07:38:20

使用SwingUtilities.invokeLater(可运行)可以解决许多挥杆错误、怪癖和其他缺点。

代码语言:javascript
复制
SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
        // JB Nizet's solution:
        myTree.setSelectionPath(new TreePath(treeModel.getPathToRoot(treeNode)));
    }
});

这也解决了与JTree.setSelectionPaths(TreePath[])相同的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8896678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档