0

我想从 tableViewer 中拖动文本,放到 a 上TreeViewer,然后将拖动的文本填充到选定的树项中。拖放源和放置目标已设置。第一个遇到的问题是 is 的项目DropTargetEventnull所以我不知道哪个树项目文本被拖放到。

Drop 目标的 drop 方法代码如下:

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=students-name x=861 y=393 item=null operations=3 operation=1 feedback=1 dataTypes={ 13 1 } currentDataType=13}

可以看出,item 是null

关于下一步要做的,我需要

  1. 获取它被丢弃的树项。

  2. 将拖动的文本填充到删除的树项的一列中

欢迎任何关于接近解决方案的评论。非常感谢。

4

1 回答 1

0

对于TreeViewer您应该扩展org.eclipse.jface.viewers.ViewerDropAdapter和实现该performDrop方法。用于TreeViewer.addDropSupport安装适配器。

performDrop调用中getCurrentTarget()将为您提供目标对象。

于 2013-09-15T09:02:35.153 回答