0

TreeViewertableViewer からテキストをドラッグし、にドロップして、ドラッグしたテキストを選択したツリー項目に入力したいと考えています。ドラッグ元とドロップ先を設定します。最初に遭遇した問題は、 の項目がDropTargetEvent であるnullため、どのツリー項目のテキストがドロップされたのかわかりません。

ドロップ ターゲットからのドロップ メソッドのコードは次のとおりです。

public void drop(DropTargetEvent event) {
   System.out.println("Droped" + event);
   if (event.data == null) { 
     event.detail = DND.DROP_NONE;
    }
    //TreeItem item = (TreeItem) event.item;
   Tree xmlTree = xmlVisualEditor.getTree();  //to get the target tree
   Point selectedPoint = new Point(event.x, event.y);
   TreeItem item  = xmlTree.getItem(selectedPoint);    #<----- Null pointer exception

   if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
      String dropedData = (String) event.data;
      System.out.println("Dropped Data:" + dropedData);
      item.setText(dropedData); 
   }

}

ドロップ ターゲット イベントの内容を出力すると、次のように表示されます。

DropTargetEvent{DropTarget {} time=141201730 data=生徒名 x=861 y=393 item=null operations=3 operation=1 feedback=1 dataTypes={ 13 1 } currentDataType=13}

ご覧のとおり、商品はnullです。

次に行うことについて、私はする必要があります

  1. ドロップされたツリーアイテムを取得します。

  2. ドロップされたツリー項目の 1 つの列にドラッグされたテキストを入力します

解決策へのアプローチに関するコメントは大歓迎です。どうもありがとう。

4

1 に答える 1

0

a のTreeViewer場合、メソッドを拡張org.eclipse.jface.viewers.ViewerDropAdapterして実装する必要がありますperformDropTreeViewer.addDropSupportアダプターの取り付けに使用します。

performDropを呼び出すと、getCurrentTarget()ターゲット オブジェクトが取得されます。

于 2013-09-15T09:02:35.153 に答える