Module  java.desktop
软件包  java.awt.dnd

Class DragSourceContext

  • All Implemented Interfaces:
    DragSourceListenerDragSourceMotionListenerSerializableEventListener


    public class DragSourceContext
    extends Object
    implements DragSourceListener, DragSourceMotionListener, Serializable
    DragSourceContext类负责管理拖放协议的发起方。 特别地,它负责管理拖动事件通知给DragSourceListenersDragSourceMotionListeners ,并提供表示拖动操作的源数据的Transferable

    请注意, DragSourceContext本身实现了DragSourceListenerDragSourceMotionListener接口。 这是为了允许由DragSource创建的平台对等体( DragSourceContextPeer实例)通知正在进行的操作中的状态更改的DragSourceContext 这允许DragSourceContext对象自身插入平台和由拖动操作的启动器提供的侦听器之间。

    默认情况下, DragSourceContext根据拖放操作的当前状态设置光标。 例如,如果用户选择了the move action ,并且指针在接受移动动作的目标上,则显示默认移动光标。 当指针位于不接受传输的区域上时,将显示默认的“不丢弃”光标。

    当通过setCursor(java.awt.Cursor)方法设置自定义光标时,此默认处理机制将被禁用。 当默认处理被禁用时,通过监听DragSource事件并调用setCursor()方法,开发人员有责任将光标保持最新。 或者,您可以通过提供DragSourceDragSourceContext类的自定义实现来提供自定义游标行为。

    从以下版本开始:
    1.2
    另请参见:
    DragSourceListenerDragSourceMotionListenerDnDConstantsSerialized Form
    • Field Summary

      Fields  
      Modifier and Type Field 描述
      protected static int CHANGED
      一个 int由updateCurrentCursor(使用)的指示用户操作已经改变。
      protected static int DEFAULT
      一个 int由updateCurrentCursor()使用,表示 Cursor应该更改为默认值(无丢弃) Cursor
      protected static int ENTER
      一个 int )由updateCurrentCursor(用来指示 Cursor已进入 DropTarget
      protected static int OVER
      一个 int由updateCurrentCursor使用()指示所述 Cursor是在 DropTarget
    • 构造方法摘要

      构造方法  
      Constructor 描述
      DragSourceContext​(DragGestureEvent trigger, Cursor dragCursor, Image dragImage, Point offset, Transferable t, DragSourceListener dsl)
      从名为 DragSource ,该构造函数创建一个新 DragSourceContext给出的 DragSourceContextPeer此拖累, DragGestureEvent触发该Drag的初始 Cursor使用的拖累,(可选的) Image ,而将正在发生显示的偏移 Image起源于触发事件瞬间的热点, Transferable主题数据,以及拖放操作期间使用的 DragSourceListener
    • 字段详细信息

      • DEFAULT

        protected static final int DEFAULT
        由updateCurrentCursor()使用的一个 int ,表示 Cursor应该更改为默认值(不下降) Cursor
        另请参见:
        Constant Field Values
      • ENTER

        protected static final int ENTER
        由updateCurrentCursor()使用的一个 int ,表示该 Cursor已经输入了一个 DropTarget
        另请参见:
        Constant Field Values
      • OVER

        protected static final int OVER
        一个 int由updateCurrentCursor使用()指示所述 Cursor是在 DropTarget
        另请参见:
        Constant Field Values
      • CHANGED

        protected static final int CHANGED
        一个 int由updateCurrentCursor(使用)的指示用户操作已经改变。
        另请参见:
        Constant Field Values
    • 构造方法详细信息

      • DragSourceContext

        public DragSourceContext​(DragGestureEvent trigger,
                                 Cursor dragCursor,
                                 Image dragImage,
                                 Point offset,
                                 Transferable t,
                                 DragSourceListener dsl)
        从名为DragSource ,该构造函数创建一个新DragSourceContext给出的DragSourceContextPeer此拖累, DragGestureEvent触发该Drag的初始Cursor使用的拖累,(可选的) Image ,而将正在发生显示的偏移Image起源于触发事件瞬间的热点, Transferable主题数据,以及拖放操作期间使用的DragSourceListener
        如果DragSourceContextPeernull NullPointerException被抛出。
        如果DragGestureEventnull NullPointerException被抛出。
        如果Cursornull不会引发异常,并为此拖动操作激活默认拖动光标行为。
        如果Imagenull没有异常抛出。
        如果Image不是null并且偏移是null NullPointerException被抛出。
        如果Transferablenull NullPointerException被抛出。
        如果DragSourceListenernull没有异常抛出。
        参数
        trigger - 触发事件
        dragCursor - 这个拖动操作的初始Cursor或默认光标处理的null ; 有关拖放时光标处理机制的详细信息,请参阅class level documentation
        dragImage - Image拖(或 null
        offset - 触发事件瞬间图像源与热点的偏移
        t - Transferable
        dsl - DragSourceListener
        异常
        IllegalArgumentException - 如果与触发事件相关联的 Componentnull
        IllegalArgumentException -如果 DragSource触发事件为 null
        IllegalArgumentException - 如果触发事件的拖动操作是 DnDConstants.ACTION_NONE
        IllegalArgumentException - 如果与触发事件相关联的 DragGestureRecognizer的源操作等于 DnDConstants.ACTION_NONE
        NullPointerException - 如果dscp,trigger或t为空,或者dragImage为非空,并且offset为null
    • 方法详细信息

      • getDragSource

        public DragSource getDragSource​()
        返回 DragSource认为这个实例 DragSourceContext
        结果
        DragSource实例化了这个 DragSourceContext
      • getComponent

        public Component getComponent​()
        返回 Component与此相关 DragSourceContext
        结果
        Component开始拖动
      • getTrigger

        public DragGestureEvent getTrigger​()
        返回最初触发拖动的 DragGestureEvent
        结果
        触发拖动的事件
      • getSourceActions

        public int getSourceActions​()
        返回 DnDConstants的按位掩码,表示与此 DragSourceContext相关联的拖动操作的拖动源支持的放置操作集。
        结果
        拖动源支持的拖放操作
      • setCursor

        public void setCursor​(Cursor c)
        将此拖动操作的自定义光标设置为指定的Cursor 如果指定的Cursornull ,则为此拖动操作启用默认拖动光标行为,否则将被禁用。
        参数
        c - 用于此拖动操作的初始Cursor ,或用于默认光标处理的null ; 有关拖放时光标处理的更多详细信息,请参阅class level documentation
      • getCursor

        public Cursor getCursor​()
        返回当前自定义拖动 Cursor
        结果
        当前自定义拖动 Cursor ,如果设置否则返回 null
        另请参见:
        setCursor(java.awt.Cursor)
      • addDragSourceListener

        public void addDragSourceListener​(DragSourceListener dsl)
                                   throws TooManyListenersException
        添加DragSourceListener这个DragSourceContext如果一个尚未加入。 如果一个DragSourceListener已经存在,这个方法会抛出一个TooManyListenersException
        参数
        dsl - 要添加的DragSourceListener 请注意,虽然不禁止null ,但它是不可接受的参数。
        异常
        TooManyListenersException - 如果已经添加了 DragSourceListener
      • removeDragSourceListener

        public void removeDragSourceListener​(DragSourceListener dsl)
        删除指定 DragSourceListener从这个 DragSourceContext
        参数
        dsl - 要删除的DragSourceListener ; 请注意,虽然不禁止null ,但它是不可接受的参数
      • transferablesFlavorsChanged

        public void transferablesFlavorsChanged​()
        通知对方, TransferableDataFlavor已更改。
      • dragEnter

        public void dragEnter​(DragSourceDragEvent dsde)
        致电 dragEnterDragSourceListener注册了这个 DragSourceContext和相关的 DragSource ,并通过他们指定的 DragSourceDragEvent
        Specified by:
        dragEnter在接口 DragSourceListener
        参数
        dsde - DragSourceDragEvent
      • dragOver

        public void dragOver​(DragSourceDragEvent dsde)
        致电 dragOverDragSourceListener注册该 DragSourceContext和相关联的 DragSource ,并通过他们指定的 DragSourceDragEvent
        Specified by:
        dragOver在接口 DragSourceListener
        参数
        dsde - DragSourceDragEvent
      • dragExit

        public void dragExit​(DragSourceEvent dse)
        致电 dragExitDragSourceListener注册了这个 DragSourceContext和相关联的 DragSource ,并通过他们指定的 DragSourceEvent
        Specified by:
        dragExit在接口 DragSourceListener
        参数
        dse - DragSourceEvent
      • dropActionChanged

        public void dropActionChanged​(DragSourceDragEvent dsde)
        致电 dropActionChangedDragSourceListener注册了这个 DragSourceContext和相关联的 DragSource ,并通过他们指定的 DragSourceDragEvent
        Specified by:
        dropActionChanged在接口 DragSourceListener
        参数
        dsde - DragSourceDragEvent
      • dragDropEnd

        public void dragDropEnd​(DragSourceDropEvent dsde)
        致电 dragDropEndDragSourceListener注册了这个 DragSourceContext和相关的 DragSource ,并通过他们指定的 DragSourceDropEvent
        Specified by:
        dragDropEnd在接口 DragSourceListener
        参数
        dsde - DragSourceDropEvent
      • dragMouseMoved

        public void dragMouseMoved​(DragSourceDragEvent dsde)
        电话 dragMouseMovedDragSourceMotionListener注册与 DragSource相关联的这个 DragSourceContext ,他们通过了指定的 DragSourceDragEvent
        Specified by:
        dragMouseMoved接口 DragSourceMotionListener
        参数
        dsde - DragSourceDragEvent
        从以下版本开始:
        1.4
      • getTransferable

        public Transferable getTransferable​()
        返回 Transferable与此 DragSourceContext相关联。
        结果
        Transferable
      • updateCurrentCursor

        protected void updateCurrentCursor​(int sourceAct,
                                           int targetAct,
                                           int status)
        如果默认拖动光标行为处于活动状态,则此方法将为拖动源支持的指定操作,放置目标操作和状态设置默认拖动光标,否则此方法不执行任何操作。
        参数
        sourceAct - 拖动源支持的操作
        targetAct - 放下目标动作
        status -一个字段 DEFAULTENTEROVERCHANGED