代码之家  ›  专栏  ›  技术社区  ›  Imaskar

在视图和编辑器中定义droptarget有区别吗?

  •  1
  • Imaskar  · 技术社区  · 16 年前

    代码是:

        DropTarget target = new DropTarget(sqlViewer.getTextWidget(), 
        DND.DROP_DEFAULT | DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK);
        Transfer[] types = new Transfer[] {TreeLeafListTransfer.getInstance(), 
        TextTransfer.getInstance(), FileTransfer.getInstance()};
        target.setTransfer(types);
        target.addDropListener(new DropTreeLeafAdapter(sqlViewer));
    

    它在视图中正常工作,但在编辑器中失败。有什么区别?
    UPD :whtat最奇怪-如果我用try/catch块包围它,它仍然毫无例外地失败。
    编辑 :问题不仅仅是dnd不起作用。由于此块,整个编辑器无法实例化。只出现一个空窗口。

    1 回复  |  直到 14 年前
        1
  •  0
  •   VonC    16 年前

    它在视图中正常工作,但在编辑器中失败。有什么区别?

    区别应该在 transfert type :

    概括地说,传输类型允许拖拽源指定他们允许从小部件中拖出的对象类型,并允许拖拽目标指定他们愿意接收的对象类型。
    对于每个传输类型,都有一个子类 org.eclipse.swt.dnd.Transfer . 这些子类实现了在对象和字节之间转换的封送处理行为,允许在应用程序之间进行拖放传输。

    可能是您使用的传输类型列表与目标(编辑器)不完全兼容?见 this thread 为了更多的测试。

    另一个需要考虑的问题是 TransferDropTargetListener (如 this thread )

    由于我还没有完全测试EclipseDND,所以我不能给您更多关于这个主题的细节,但是希望这能给您一些东西来开始您自己的分析。