首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jtree扩展和选择问题

Jtree扩展和选择问题
EN

Stack Overflow用户
提问于 2011-02-21 14:04:32
回答 1查看 1.7K关注 0票数 0

我有两个JTrees实例(leftTree和rightTree)。用户可以从左侧树中选择一些节点,并将其添加到右侧树中。我在add按钮操作侦听器中有以下代码,用于在添加节点后在rightTree中展开并选择该节点。

代码语言:javascript
复制
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层深。请帮我解决这个问题,如果你需要更多信息,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2011-02-21 17:08:05

对我来说,这种方法是不正确的。TreePath实际上是从当前节点到最顶层父节点的节点序列。换句话说,通过调用getParet()来创建来自节点的TreePath,直到到达tull为止。因此,如果您从一棵树中获取节点并创建路径,则路径是原始树中节点的序列,而在第二棵树中路径是无效的,因为路径中的一些节点在目标树模型中并不存在。

您需要获取选定的节点,并在第二个树中找到合适的节点。猜测一个具有相同用户对象的节点。对于目标树中找到的节点(如果我们找到了它),创建TreePath并选择/展开。

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

https://stackoverflow.com/questions/5062864

复制
相关文章

相似问题

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