我有一个JTree (myTree),在另一个班级里,我有一个DefaultMutableTreeNode,它是从myTree上学来的。
在特定的函数中,我希望JTree突出显示节点。
我试过:
myTree.setSelectionPath(new TreePath(treeNode));但从视觉上看什么也没发生。
有什么想法吗?
更新:
我还有另一个JTable,它是基于所选的treeNode in myTree呈现的。该表正在正确地更新。只是myTree拒绝在视觉上进行更新。
发布于 2012-01-17 14:58:58
您需要使用节点的实际树路径。不仅仅是TreePath的一个实例:
myTree.setSelectionPath(new TreePath(treeModel.getPathToRoot(treeNode)));另外,javadoc说:
如果路径的任何组件是隐藏的(在折叠的节点下),并且getExpandsSelectedPaths是真的,那么它是公开的(变为可视的)。
所以,确保getExpandsSelectedPaths是真的。
发布于 2012-01-17 15:22:50
从java中,我们得到了下面对TreePath的描述:
表示到节点的路径。TreePath是从TreeModel中获得的对象数组。数组的元素是有序的,因此根总是数组的第一个元素(索引0)。
因此,必须从一个数组构造一个有效的TreePath,该数组包括来自根节点和要选择的节点的路径上的所有节点。
发布于 2013-10-28 07:38:20
使用SwingUtilities.invokeLater(可运行)可以解决许多挥杆错误、怪癖和其他缺点。
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// JB Nizet's solution:
myTree.setSelectionPath(new TreePath(treeModel.getPathToRoot(treeNode)));
}
});这也解决了与JTree.setSelectionPaths(TreePath[])相同的问题。
https://stackoverflow.com/questions/8896678
复制相似问题