将一些文本放到treeViewer的treeitem上,然后将其填充到treeitem中

时间:2013-09-15 05:57:03

标签: java swt jface drag-and-drop treeviewer

我想从tableViewer拖动文本,放到TreeViewer,然后将拖动的文本填充到 选定的树形图案。 拖动源和放置目标已设置。第一个遇到的问题是DropTargetEvent的项目 是null,所以我不知道哪个treeitem文本被删除。

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); 
   }

}

我打印了drop target事件的内容,它显示为:

  

DropTargetEvent {DropTarget {} time = 141201730 data = students-name x = 861   y = 393 item = null operations = 3 operation = 1 feedback = 1 dataTypes = {13 1}   currentDataType = 13}

尽管如此,项目是null

关于下一步,我需要

  1. 获取丢弃的树状物。

  2. 将拖动的文本填充到已删除的treeitem

  3. 的一列中

    欢迎任何有关寻求解决方案的意见。 非常感谢。

1 个答案:

答案 0 :(得分:0)

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

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