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

Class DragSourceContext

  • All Implemented Interfaces:
    DragSourceListener , DragSourceMotionListener , Serializable , EventListener


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

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

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

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

    从以下版本开始:
    1.2
    另请参见:
    DragSourceListener , DragSourceMotionListener , DnDConstants , Serialized 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 。
        如果DragSourceContextPeer是null NullPointerException被抛出。
        如果DragGestureEvent是null NullPointerException被抛出。
        如果Cursor为null不会引发异常,并为此拖动操作激活默认拖动光标行为。
        如果Image是null没有异常抛出。
        如果Image不是null并且偏移是null NullPointerException被抛出。
        如果Transferable是null NullPointerException被抛出。
        如果DragSourceListener是null没有异常抛出。
        参数
        trigger - 触发事件
        dragCursor - 这个拖动操作的初始Cursor或默认光标处理的null ; 有关拖放时光标处理机制的详细信息,请参阅class level documentation
        dragImage - Image拖(或 null )
        offset - 触发事件瞬间图像源与热点的偏移
        t - Transferable
        dsl - DragSourceListener
        异常
        IllegalArgumentException - 如果与触发事件相关联的 Component是 null 。
        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 。 如果指定的Cursor为null ,则为此拖动操作启用默认拖动光标行为,否则将被禁用。
        参数
        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​()
        通知对方, Transferable的 DataFlavor已更改。
      • dragEnter

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

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

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

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

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

        public void dragMouseMoved​(DragSourceDragEvent dsde)
        电话 dragMouseMoved在 DragSourceMotionListener注册与 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 -一个字段 DEFAULT , ENTER , OVER , CHANGED