【问题标题】:How to get source and destination widgets with Eclipse Drag and Drop如何使用 Eclipse 拖放获取源和目标小部件
【发布时间】:2014-03-03 22:47:57
【问题描述】:

在我的 DragSourceListener 中,我收到 DragSourceEvent 类型的事件,它具有源小部件,但没有目标小部件。

在我的 ViewerDropAdapter 中,我收到 DropTargetEvent 类型的事件,它具有目标小部件,但没有源小部件。

是否支持拖放的部分验证取决于源小部件和目标小部件。

如何进行同时涉及源小部件和目标小部件的验证?

【问题讨论】:

    标签: java drag-and-drop swt eclipse-rcp jface


    【解决方案1】:

    如果您只想在您自己的控件之间拖动,您可以使用您自己的 org.eclipse.swt.dnd.Transfer 类型,其中包含您需要的任何额外信息(可能基于 ByteArrayTransfer)。

    Eclipse LocalSelectionTransfer 做了一些类似这样的操作,以允许在控件之间拖动选择。

    【讨论】:

      【解决方案2】:

      如果您尝试在同一查看器中拖放小部件(例如尝试通过拖放重新排序元素等),您可以使用 getSelectedObject()getCurrentTarget() 方法在 ViewerDropAdapter 中。

      getSelectedObject() - 返回查看器中选定的对象,这是被拖动的源元素。
      getCurrentTarget() - 返回当前鼠标悬停在查看器上的目标对象,这将是放置时的目的地。

      您也可以覆盖这些方法以满足您的需要。

      您可以在 validateDrop() 中验证源对象和目标对象,以检查是否应允许放置。注意,默认情况下,目标对象在 validateDrop() 中可用。

      validateDrop(Object target, int operation, TransferData transferType) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-15
        • 2020-08-03
        • 1970-01-01
        • 1970-01-01
        • 2014-07-20
        • 1970-01-01
        • 2016-09-13
        • 2016-09-11
        相关资源
        最近更新 更多