gpt4 book ai didi

java - ContentProvider 的 getChildren() 是否在 ITreeViewerListener 的 treeExpanded() 之前调用?

转载 作者:行者123 更新时间:2023-12-01 22:14:26 25 4
gpt4 key购买 nike

如果树的特定元素展开,我想获取数据。

public void treeExpanded(TreeExpansionEvent event) {  
Object element = event.getElement();
if (element instanceof MyClass) {
fetch.......
}
}

问题是内容提供程序似乎在treeExpanded()方法之前触发getChildren(),因此每次展开元素时我都会得到一个NullPointerException,因为内容提供者尝试使用从未获取的数据。我该如何正确解决这个问题?

最佳答案

您的代码不应依赖于 getChildren()treeExpanded() 的调用顺序。这是 TreeViewer 的实现细节,将来可能会发生变化。

获取要在内容提供程序的 getChildren()inputChanged() 中显示的元素。

如果您的提取操作需要太长时间才能在 UI 线程中运行,请在后台线程中运行它,并在提取操作完成后返回一个被替换的占位符元素。有关示例,请参阅 org.eclipse.uiDeferredTreeContentManager

或者,您可以查看 JFace DeferredContentProvider 是否满足您的需求。

关于java - ContentProvider 的 getChildren() 是否在 ITreeViewerListener 的 treeExpanded() 之前调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31387215/

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