如何解决在TreeViewer的扩展中添加子项
我有一个TreeViewer,其中包含要从其余api获取的带有子元素的元素,因此最初没有用于节点的子元素。我目前要做的是将doubleClickListener添加到节点,并获取所选节点的子代,然后使用树视图器的方法“ expandToLevel”显示它们。我也希望能够通过单击展开箭头来做到这一点。
public void doubleClick(DoubleClickEvent event) {
IStructuredSelection selection = (IStructuredSelection) event.getSelection();
Module m = (Module) selection.getFirstElement();
//----> theChildren are fetched here <---
m.setStrings(theChildren);
treeViewer.expandToLevel(m,1);
}
不幸的是,当我尝试使用treeListener进行操作时,首先调用了内容提供者的getChildren方法,因此返回没有子级的信息。可以在getChildren方法中进行api调用吗?
treeViewer.addTreeListener(new ITreeViewerListener() {
@Override
public void treeExpanded(TreeExpansionEvent event) {
Module m = (Module) event.getElement();
//----> theChildren are fetched here <---
m.setStrings(theChildren);
}
@Override
public void treeCollapsed(TreeExpansionEvent event) {
// Todo Auto-generated method stub
}
});
解决方法
我找到了解决方案。我不知道它是否是最好的,但是它可以工作。 在treeExpanded中,我向treeViewer的扩展添加了异步调用,因此现在显示了子级。
Display.getCurrent().asyncExec(new Runnable() {
@Override
public void run() {
treeViewer.expandToLevel(m,1);
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。