是否可以在 VIRTUAL 模式下以编程方式在 SWT 树上触发 setData 事件?
问问题
685 次
3 回答
1
notifyListeners
Widget 中的- 方法就是这样做的。
tree.notifyListeners(SWT.SetData, <EventData>)
但是,您必须构建并移交适当的事件。
于 2012-05-16T20:26:53.130 回答
1
我只想补充Fabian Zeindl的回答,它对我有用,以防这些附加信息对某人有用。
使用SWT.VIRTUAL
标志时,元素会TreeItem
在滚动到视图时按需加载。我想在 a 中选择一个TreeViewer
尚未加载的元素,因为TreeItem
它viewer.setSelection()
无法工作。
这意味着必须将给定元素显式加载为 TreeItem。
这是使它工作的简化示例代码:
final Tree treeViewerTree = treeViewer.getTree();
// we now assume that the indexOfElementToSelect value is set to a correct value (which is a lower value than treeViewerTree.getItemCount()!!)
TreeItem treeItem = treeViewerTree.getItem(indexOfElementToSelect);
final boolean isVirtualTree = (treeViewerTree.getStyle() & SWT.VIRTUAL) != 0;
if(isVirtualTree) {
// trigger SWT.SetData event programmatically on SWT tree in VIRTUAL mode which loads the item explicitly
Event virtualTreeEvent = new Event();
virtualTreeEvent.index = indexOfElementToSelect;
virtualTreeEvent.item = treeItem;
// triggering SWT.SetData programmatically
treeViewerTree.notifyListeners(SWT.SetData, virtualTreeEvent);
}
treeViewer.setSelection(new StructuredSelection(........), true);
于 2015-11-23T11:28:15.747 回答
0
Sam Zheng,两年后我当然希望你找到答案,但这里是为其他寻求真理的人准备的:
对根级项使用Tree.clear(index,boolean)
or方法,对根级以下的项使用or方法。Tree.clearAll(boolean)
TreeItem.clear(index,boolean)
TreeItem.clear(boolean)
于 2014-10-24T18:56:15.290 回答