Java 正在初始化同一视图的多放置支持

Java 正在初始化同一视图的多放置支持,java,swt,Java,Swt,如何在一个视图中使用具有不同传输类型的两个不同放置支撑 int srcOps = DND.DROP_MOVE | DND.DROP_COPY; Transfer[] dragDropTransfers = new Transfer[] { myTransferType1.getInstance() }; this.getTreeViewer().addDragSupport(srcOps, dragDropTransfers, new OverviewDragSource

如何在一个视图中使用具有不同传输类型的两个不同放置支撑

    int srcOps = DND.DROP_MOVE | DND.DROP_COPY;
    Transfer[] dragDropTransfers = new Transfer[] { myTransferType1.getInstance() };
    this.getTreeViewer().addDragSupport(srcOps, dragDropTransfers, new OverviewDragSourceAdapter(this));
    this.getTreeViewer().addDropSupport(srcOps, dragDropTransfers, new OverviewDropAdapter(this));
    dragDropTransfers = new Transfer[] { myTransferType2.getInstance() };
    this.getTreeViewer().addDropSupport(srcOps, dragDropTransfers, new AddDropAdapter(this));
它给出org.eclipse.swt.swt错误:无法初始化Drop。

内部addDropSupport使用DropTarget。DropTarget的JavaDoc说:

错误\u无法\u初始化\u删除-无法启动删除目标;这将 如果为控件创建了多个放置目标,或者 操作系统将不允许创建删除目标


因此,您不能使用多个调用来添加DropSupport。您需要编写一个DropTargetListener,而不是冗长的代码描述,在这里提取并发布真实代码会更有帮助。最后一句话是真的吗?DropTarget.addDropListener的文档明确地引用了侦听器的集合。@并且,由于问题在于使用了多个viewer addDropSupport调用,每个调用都使用一个单独的DropTarget类实例,但该实例不起作用。