gpt4 book ai didi

java - JTree:TreeNode 和 TreePath 之间缺少链接

转载 作者:行者123 更新时间:2023-11-29 03:31:55 24 4
gpt4 key购买 nike

我遇到了同样描述的问题 here .

我在 MyTree 类中有 invertExpand 方法,它的工作方式如下:

public void invertExpand(DefaultMutableTreeNode node) {
TreePath path = new TreePath(node.getPath()); // no better way to get TreePath from TreeNode :(
if (!isExpanded(path)) {
expandPath(path);
} else {
collapsePath(path);
}
}

但问题是 isExpanded() 方法使用 HashMap 来存储扩展路径。似乎 isExpanded() 从未为新创建的 TreePath 返回 true。 (但他们真的扩大了)

有什么办法可以解决这个问题吗?

最佳答案

展开/折叠适用于非叶节点,因此请确保所讨论的节点不是叶节点:

public void invertExpand(DefaultMutableTreeNode node) {
if (node.isLeaf())
node = (DefaultMutableTreeNode) node.getParent();
TreePath path = new TreePath(node.getPath()); // no better way to get TreePath from TreeNode :(
if (isExpanded(path)) {
collapsePath(path);
} else {
expandPath(path);
}
}

编辑(根据OP的评论)

不当行为的真正原因是在自定义节点中错误地实现了 hasCode,这混淆了 Map(存储扩展路径的地方)。

关于java - JTree:TreeNode 和 TreePath 之间缺少链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17703470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com