繁体   English   中英

Jtree扩展和选择问题

[英]Jtree expansion and selection problem

我有两个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层。 请帮助我解决此问题,如果需要更多信息,请告诉我。

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

您需要选择节点并在第二棵树中找到一个合适的节点。 猜测具有相同用户对象的节点。 在目标树中找到的节点(如果找到)的,创建TreePath并选择/扩展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM