gpt4 book ai didi

Java 树节点 : How to prevent getChildCount from doing expensive operation?

转载 作者:搜寻专家 更新时间:2023-11-01 03:15:10 24 4
gpt4 key购买 nike

我正在编写一个 Java 树,其中树节点可能有需要很长时间计算的子节点(在这种情况下,它是一个文件系统,其中可能存在网络超时,阻止从附加的文件中获取文件列表驱动器)。

我发现的问题是:

  1. getChildCount() 在用户明确请求打开树的特定分支之前被调用。我相信这样做是为了让 JTree 知道是否在节点旁边显示一个 + 图标。

  2. 来自 getChildCount() 的 child 的准确计数将需要执行可能代价高昂的操作

  3. 如果我伪造 getChildCount() 的值,树只会在请求子节点枚举之前为那么多子节点分配空间。 (如果我返回“1”,我只会看到列出 1 个 child ,尽管还有更多 child )

child 的枚举可能既昂贵又耗时,我对此没有意见。但我不同意 getChildCount() 需要知道 child 的确切数量。

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

补充:另一个问题是,如果其中一个节点代表一个软盘驱动器(多么陈旧!),在用户请求其文件之前将轮询该驱动器;如果驱动器中没有磁盘,则会导致系统错误。

更新:不幸的是,实现TreeWillExpand 监听器并不是解决方案。这可以让您否决扩展,但显示的节点数仍然受限于 TreeNode.getChildCount() 返回的值。

最佳答案

http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html#data

向下滚动一点,这里有关于如何为 jtree 创建延迟加载节点的确切教程,包括示例和文档

关于Java 树节点 : How to prevent getChildCount from doing expensive operation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/154791/

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