Tree 如何在虚拟模式下以编程方式在SWT树上触发setData事件

Tree 如何在虚拟模式下以编程方式在SWT树上触发setData事件,tree,swt,virtual,Tree,Swt,Virtual,是否可以在虚拟模式下以编程方式在SWT树上触发setData事件?小部件中的notifyListeners-方法会执行此操作 tree.notifyListeners(SWT.SetData, <EventData>) tree.notifyListeners(SWT.SetData,) 不过,你必须构建并移交一个适当的事件。山姆·郑,两年后,我当然希望你找到了答案,但这是给其他寻求真相的人的: 使用Tree.clear(index,boolean)或Tree.clearAll(

是否可以在虚拟模式下以编程方式在SWT树上触发setData事件?

小部件中的
notifyListeners
-方法会执行此操作

tree.notifyListeners(SWT.SetData, <EventData>)
tree.notifyListeners(SWT.SetData,)

不过,你必须构建并移交一个适当的事件。

山姆·郑,两年后,我当然希望你找到了答案,但这是给其他寻求真相的人的:


使用
Tree.clear(index,boolean)
Tree.clearAll(boolean)
方法处理根级别的项目,使用
TreeItem.clear(index,boolean)
TreeItem.clear(boolean)
方法处理根级别以下的项目。

我只想补充一下为我工作的Fabian Zeindl,以防这些附加信息对某人有用

使用
SWT.VIRTUAL
标志时,将元素滚动到视图中时,元素按需加载为
TreeItem
s。我想在
TreeViewer
中选择一个元素,该元素尚未作为
TreeItem
加载,这使得
viewer.setSelection()
无法工作。
这意味着必须将给定元素显式加载为TreeItem

下面是一个简化的示例代码,可供使用:

final Tree treeViewerTree=treeViewer.getTree();
//现在我们假设indexOfElementToSelect值设置为正确的值(该值低于treeViewerTree.getItemCount()!!)
TreeItem TreeItem=treeViewerTree.getItem(indexOfElementToSelect);
最后一个布尔值是virtualtree=(treeViewerTree.getStyle()&SWT.VIRTUAL)!=0;
如果(iVirtualTree){
//以虚拟模式在SWT树上以编程方式触发SWT.SetData事件,该模式显式加载项
Event virtualTreeEvent=新事件();
virtualTreeEvent.index=indexOfElementToSelect;
virtualTreeEvent.item=treeItem;
//以编程方式触发SWT.SetData
notifyListeners(SWT.SetData、virtualTreeEvent);
}
treeViewer.setSelection(新结构选择(………),true);

这不是我想要的,因为要使用此函数,必须创建事件数据。不管怎样,我终于绕过了这个问题。谢谢你,费边,这对我很有效+1.是对我的案例的简短描述。这对我不起作用,它不会触发
SWT.SetData
事件。但费边的的确如此。