模块  java.desktop
软件包  java.awt.dnd

Class DragSource

  • 实现的所有接口
    Serializable

    public class DragSource
    extends Object
    implements Serializable
    DragSource是负责启动拖放操作的实体,可以在许多场景中使用:
    • 每个JVM的1个默认实例,用于该JVM的生命周期。
    • 每类潜在的Drag Initiator对象(例如TextField)有1个实例。 [依赖于实施]
    • 每个特定Component实例1,或与GUI中的Component实例关联的特定Component应用程序的对象。 [依赖于实施]
    • 其他一些任意关联。 [依赖于实施]
    一旦DragSource获得,一个DragGestureRecognizer还应获得的关联DragSource与特定Component

    用户手势的初始解释以及随后的拖动操作的开始是实施Component的责任,其通常由DragGestureRecognizer实现。

    当发生拖动手势时,应调用DragSource的startDrag()方法,以便处理用户的导航手势和拖放协议通知的传递。 DragSource只允许单个拖放操作在任何时候都是当前的,并且应该通过抛出IllegalDnDOperationException拒绝任何进一步的startDrag()请求,直到现存操作完成为止。

    的startDrag()方法调用createDragSourceContext()方法来实例化一个适当DragSourceContext和关联DragSourceContextPeer这一点。

    如果拖放系统由于某种原因无法启动拖动操作,则startDrag()方法会抛出java.awt.dnd.InvalidDnDOperationException以指示此类情况。 通常,当底层平台系统未处于启动拖动的状态或指定的参数无效时,将引发此异常。

    请注意,在拖动期间,在拖动操作开始时由源公开的操作集可能不会更改,直到操作完成。 DragSource的操作期间,操作是恒定的。

    从以下版本开始:
    1.2
    另请参见:
    Serialized Form
    • 字段详细信息

      • DefaultCopyDrop

        public static final Cursor DefaultCopyDrop
        默认值Cursor与复制操作一起使用,表示当前允许放置。 null如果GraphicsEnvironment.isHeadless()返回true
        另请参见:
        GraphicsEnvironment.isHeadless()
      • DefaultMoveDrop

        public static final Cursor DefaultMoveDrop
        默认值Cursor与移动操作一起使用,表示当前允许放置。 null如果GraphicsEnvironment.isHeadless()返回true
        另请参见:
        GraphicsEnvironment.isHeadless()
      • DefaultLinkDrop

        public static final Cursor DefaultLinkDrop
        默认值Cursor ,用于指示当前允许放置的链接操作。 null如果GraphicsEnvironment.isHeadless()返回true
        另请参见:
        GraphicsEnvironment.isHeadless()
      • DefaultCopyNoDrop

        public static final Cursor DefaultCopyNoDrop
        默认值Cursor与复制操作一起使用,表示当前不允许放置。 null如果GraphicsEnvironment.isHeadless()返回true
        另请参见:
        GraphicsEnvironment.isHeadless()
      • DefaultMoveNoDrop

        public static final Cursor DefaultMoveNoDrop
        默认值Cursor与移动操作一起使用,表示当前不允许放置。 null如果GraphicsEnvironment.isHeadless()返回true
        另请参见:
        GraphicsEnvironment.isHeadless()
      • DefaultLinkNoDrop

        public static final Cursor DefaultLinkNoDrop
        默认值Cursor与链接操作一起使用,表示当前不允许删除。 null如果GraphicsEnvironment.isHeadless()返回true
        另请参见:
        GraphicsEnvironment.isHeadless()
    • 方法详细信息

      • isDragImageSupported

        public static boolean isDragImageSupported()
        报告是否在底层平台上提供了拖动 Image支持。
        结果
        如果此平台上提供了“拖动图像”支持
      • startDrag

        public void startDrag​(DragGestureEvent trigger,
                              Cursor dragCursor,
                              Image dragImage,
                              Point imageOffset,
                              Transferable transferable,
                              DragSourceListener dsl,
                              FlavorMap flavorMap)
                       throws InvalidDnDOperationException
        开始一拖,考虑到 DragGestureEvent启动拖动,初步 Cursor用, Image拖动,偏移量的 Image从的热点起源 Cursor在扳机的瞬间, Transferable拖动的目标数据, DragSourceListenerFlavorMap
        参数
        trigger - 发起阻力的 DragGestureEvent
        dragCursor - 此拖动操作的初始Cursor或默认光标处理的null ; 有关拖放期间光标处理机制的更多详细信息,请参阅DragSourceContext
        dragImage - 要拖动的图像或 null
        imageOffset -偏移量的 Image起源从研究的热点 Cursor在扳机的瞬间
        transferable - 拖动的主题数据
        dsl - DragSourceListener
        flavorMap - 要使用的 FlavorMap ,或 null
        异常
        InvalidDnDOperationException - 如果拖放系统无法启动拖动操作,或者用户尝试在现有拖动操作仍在执行时尝试启动拖动
      • startDrag

        public void startDrag​(DragGestureEvent trigger,
                              Cursor dragCursor,
                              Transferable transferable,
                              DragSourceListener dsl,
                              FlavorMap flavorMap)
                       throws InvalidDnDOperationException
        开始一拖,考虑到 DragGestureEvent启动拖动,初步 Cursor用, Transferable拖动的目标数据,该 DragSourceListenerFlavorMap
        参数
        trigger - 启动拖动的 DragGestureEvent
        dragCursor - 此拖动操作的初始Cursor或默认光标处理的null ; 有关拖放期间光标处理机制的更多详细信息,请参阅DragSourceContext
        transferable - 拖动的主题数据
        dsl - DragSourceListener
        flavorMap - 要使用的 FlavorMapnull
        异常
        InvalidDnDOperationException - 如果拖放系统无法启动拖动操作,或者用户在现有拖动操作仍在执行时尝试启动拖动
      • startDrag

        public void startDrag​(DragGestureEvent trigger,
                              Cursor dragCursor,
                              Image dragImage,
                              Point dragOffset,
                              Transferable transferable,
                              DragSourceListener dsl)
                       throws InvalidDnDOperationException
        开始一拖,考虑到 DragGestureEvent启动拖动,初步 Cursor用, Image拖动时,该偏移 Image从的热点起源 Cursor在触发,拖动的目标数据的瞬间,和 DragSourceListener
        参数
        trigger - 启动拖动的 DragGestureEvent
        dragCursor - 此拖动操作的初始Cursor或默认光标处理的null ; 有关拖放期间光标处理机制的更多详细信息,请参阅DragSourceContext
        dragImage -将 Image拖动或 null
        dragOffset - 触发瞬间 Cursor的热点偏离 Image的热点
        transferable - 拖动的主题数据
        dsl - DragSourceListener
        异常
        InvalidDnDOperationException - 如果拖放系统无法启动拖动操作,或者用户在现有拖动操作仍在执行时尝试启动拖动
      • startDrag

        public void startDrag​(DragGestureEvent trigger,
                              Cursor dragCursor,
                              Transferable transferable,
                              DragSourceListener dsl)
                       throws InvalidDnDOperationException
        开始一拖,考虑到 DragGestureEvent启动拖动,初步 Cursor用, Transferable拖动的目标数据和 DragSourceListener
        参数
        trigger - 启动拖动的 DragGestureEvent
        dragCursor - 此拖动操作的初始Cursor或默认光标处理的null ; 有关拖放期间光标处理机制的更多详细信息,请参见DragSourceContext
        transferable - 拖动的主题数据
        dsl - DragSourceListener
        异常
        InvalidDnDOperationException - 如果拖放系统无法启动拖动操作,或者用户在现有拖动操作仍在执行时尝试启动拖动
      • createDragSourceContext

        protected DragSourceContext createDragSourceContext​(DragGestureEvent dgl,
                                                            Cursor dragCursor,
                                                            Image dragImage,
                                                            Point imageOffset,
                                                            Transferable t,
                                                            DragSourceListener dsl)
        创建DragSourceContext以处理当前拖动操作。

        要合并新的DragSourceContext子类,子类DragSource并重写此方法。

        如果dragImagenull ,则不会使用任何图像来表示此拖动操作的反馈拖动,但不会抛出NullPointerException

        如果dslnull ,则未使用创建的DragSourceContext注册拖动源侦听DragSourceContext ,但不会抛出NullPointerException

        参数
        dgl - 触发拖动的 DragGestureEvent
        dragCursor - 此拖动操作的初始Cursor或默认光标处理的null ; 有关拖放期间光标处理机制的更多详细信息,请参见DragSourceContext
        dragImage - 要拖动的 Imagenull
        imageOffset - 触发瞬间 Image原点偏离光标的热点
        t - 拖动的主题数据
        dsl - DragSourceListener
        结果
        DragSourceContext
        异常
        NullPointerException - 如果 dscpnull
        NullPointerException - 如果 dglnull
        NullPointerException - 如果 dragImage不是 nullimageOffsetnull
        NullPointerException - 如果 tnull
        IllegalArgumentException - 如果与触发事件关联的 Componentnull
        IllegalArgumentException -如果 DragSource触发事件为 null
        IllegalArgumentException - 如果触发事件的拖动操作是 DnDConstants.ACTION_NONE
        IllegalArgumentException - 如果与触发器事件关联的 DragGestureRecognizer的源操作等于 DnDConstants.ACTION_NONE
      • getFlavorMap

        public FlavorMap getFlavorMap()
        此方法返回 FlavorMap这个 DragSource
        结果
        FlavorMapDragSource
      • createDragGestureRecognizer

        public <T extends DragGestureRecognizer> T createDragGestureRecognizer​(<T> recognizerAbstractClass,
                                                                               Component c,
                                                                               int actions,
                                                                               DragGestureListener dgl)
        创建一个新的 DragGestureRecognizer ,它实现指定的抽象子类 DragGestureRecognizer ,并在新创建的对象上设置指定的 ComponentDragGestureListener
        参数类型
        T - 要创建的 DragGestureRecognizer的类型
        参数
        recognizerAbstractClass - 请求的抽象类型
        actions - 允许的源拖动操作
        c - Component目标
        dgl - DragGestureListener通知
        结果
        新的 DragGestureRecognizernull如果 Toolkit.createDragGestureRecognizer方法没有可用于请求的 DragGestureRecognizer子类的实现并返回 null
      • createDefaultDragGestureRecognizer

        public DragGestureRecognizer createDefaultDragGestureRecognizer​(Component c,
                                                                        int actions,
                                                                        DragGestureListener dgl)
        创建一个新的DragGestureRecognizer实现的默认抽象子类DragGestureRecognizer这个DragSource ,并设置指定ComponentDragGestureListener新创建的对象上。 对于此DragSource ,默认值为MouseDragGestureRecognizer
        参数
        c - 识别器的 Component目标
        actions - 允许的源操作
        dgl - DragGestureListener通知
        结果
        新的 DragGestureRecognizernull如果 Toolkit.createDragGestureRecognizer方法没有可用于请求的 DragGestureRecognizer子类的实现并返回 null
      • removeDragSourceListener

        public void removeDragSourceListener​(DragSourceListener dsl)
        删除指定DragSourceListener从这个DragSource 如果指定了null侦听器,则不执行任何操作,也不会引发异常。 如果先前未将参数指定的侦听器添加到此DragSource ,则不执行任何操作,也不会引发异常。
        参数
        dsl - 要删除的 DragSourceListener
        从以下版本开始:
        1.4
        另请参见:
        addDragSourceListener(java.awt.dnd.DragSourceListener)getDragSourceListeners()
      • getListeners

        public <T extends EventListener> T[] getListeners​(<T> listenerType)
        获取当前注册的所有对象FooListener在这个S DragSource FooListener s使用addFooListener方法注册。
        参数类型
        T - 侦听器对象的类型
        参数
        listenerType - 请求的侦听器类型; 此参数应指定从java.util.EventListener下降的接口
        结果
        DragSource上注册为 FooListener的所有对象的数组,如果未添加此类侦听器,则为空数组
        异常
        ClassCastException - 如果 listenerType未指定实现 java.util.EventListener的类或接口
        从以下版本开始:
        1.4
        另请参见:
        getDragSourceListeners()getDragSourceMotionListeners()
      • getDragThreshold

        public static int getDragThreshold()
        返回拖动手势运动阈值。 拖动手势运动阈值定义了MouseDragGestureRecognizer的推荐行为。

        如果系统属性awt.dnd.drag.threshold设置为正整数,则此方法返回系统属性的值; 否则,如果Java平台的实现可以使用并支持相关的桌面属性,则此方法返回该属性的值; 否则此方法返回一些默认值。 可以使用java.awt.Toolkit.getDesktopProperty("DnD.gestureMotionThreshold")查询相关的桌面属性。

        结果
        拖动手势动作阈值
        从以下版本开始:
        1.5
        另请参见:
        MouseDragGestureRecognizer