【发布时间】:2011-07-01 01:50:14
【问题描述】:
我有两个 JTrees 实例(leftTree 和 rightTree)。用户可以从左树中选择一些节点并将其添加到右树。我在添加按钮操作侦听器中有以下代码,用于在添加节点后展开并选择 rightTree 中的节点。
rightTree.updateUI();
TreePath[] paths = leftTree.getSelectionPaths();
if (null != paths && paths.length > 0)
{
TreePath path = paths[0];
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
rightTree.scrollPathToVisible(new TreePath(node.getPath()));
rightTree.setSelectionPaths(paths);
}
leftTree.clearSelection();
此代码似乎对某些节点工作正常,但对 leftTree 中的某些其他节点却不能工作。问题是即使执行了上面的代码,rightTree还是处于折叠状态,看不到选中的节点。
我曾尝试在 JTree 中使用其他方法,例如 setExpandsSelectedPaths(true)、expandPath(new TreePath(node.getParent()))。另外,在执行上述代码后尝试调用 rightTree.repaint() 或 rightTree.validate()。但问题仍然存在。但是 rightTree.isExpanded(new TreePath(node.getParent())) 返回 true;
我的树大约有 7-8 层深。请帮我解决这个问题,如果您需要更多信息,请告诉我。
【问题讨论】:
-
为了尽快获得更好的帮助,请发布 SSCCE (pscode.org/sscce.html)。另请注意,虽然您可能认为您的问题很清楚,但提出问题总是值得的。 (有时候我太忙了,我对帖子做的第一件事就是在'?'上'找到'。如果没有找到'?',我会直接进入下一个线程。)跨度>