我想从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
。
关于下一步,我需要
获取丢弃的树状物。
将拖动的文本填充到已删除的treeitem
欢迎任何有关寻求解决方案的意见。 非常感谢。
答案 0 :(得分:0)
对于TreeViewer
,您应该扩展org.eclipse.jface.viewers.ViewerDropAdapter
并实施performDrop
方法。使用TreeViewer.addDropSupport
安装适配器。
在performDrop
中,对getCurrentTarget()
的调用将为您提供目标对象。