3

VIRTUALモードのSWTツリーでsetDataイベントをプログラムでトリガーすることは可能ですか?

4

3 に答える 3

1

WidgetのnotifyListeners-methodはこれを行います。

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

ただし、適切なイベントを作成して引き渡す必要があります。

于 2012-05-16T20:26:53.130 に答える
1

これらの追加情報が誰かにとって役立つ場合に備えて、私にとってはうまくいったFabian Zeindl答えを補足したいと思います。

SWT.VIRTUALフラグを使用すると、要素TreeItemをビューにスクロールするときに要素がオンデマンドで読み込まれます。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、2年後、あなたが答えを見つけたことを願っていますが、ここでは真実を求める他の人のために:

ルート レベルのアイテムにはTree.clear(index,boolean)またはメソッドを使用し、ルートの下のアイテムにはまたはメソッドを使用します。Tree.clearAll(boolean)TreeItem.clear(index,boolean)TreeItem.clear(boolean)

于 2014-10-24T18:56:15.290 に答える