模块 java.desktop

类 DragSourceContext

java.lang.Object
java.awt.dnd.DragSourceContext
所有已实现的接口:
DragSourceListener , DragSourceMotionListener , Serializable , EventListener

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

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

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

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

自从:
1.2
参见:
  • 字段摘要

    字段
    修饰符和类型
    Field
    描述
    protected static final int
    updateCurrentCursor() 使用的 int 指示用户操作已更改。
    protected static final int
    updateCurrentCursor() 使用的 int 指示 Cursor 应更改为默认值(不删除)Cursor
    protected static final int
    updateCurrentCursor() 使用的 int 指示 Cursor 已进入 DropTarget
    protected static final int
    updateCurrentCursor() 使用的 int 指示 CursorDropTarget 之上。
  • 构造方法总结

    构造方法
    构造方法
    描述
    DragSourceContext(DragGestureEvent trigger, Cursor dragCursor, Image dragImage, Point offset, Transferable t, DragSourceListener dsl)
    DragSource 调用,此构造函数创建一个新的 DragSourceContext,给定此拖动的 DragSourceContextPeer,触发拖动的 DragGestureEvent,用于拖动的初始 Cursor,一个(可选)Image 在拖动发生时显示,偏移量Image 起源于触发事件瞬间的热点,Transferable 主题数据,以及在拖放操作期间使用的 DragSourceListener
  • 方法总结

    修饰符和类型
    方法
    描述
    void
    如果还没有添加一个DragSourceListener到这个DragSourceContext
    void
    在注册到此 DragSourceContext 和关联的 DragSourceDragSourceListener 上调用 dragDropEnd,并将指定的 DragSourceDropEvent 传递给它们。
    void
    在注册到此 DragSourceContext 和关联的 DragSourceDragSourceListener 上调用 dragEnter,并将指定的 DragSourceDragEvent 传递给它们。
    void
    在注册到此 DragSourceContext 和关联的 DragSourceDragSourceListener 上调用 dragExit,并将指定的 DragSourceEvent 传递给它们。
    void
    在与此 DragSourceContext 关联的 DragSource 注册的 DragSourceMotionListener 上调用 dragMouseMoved,并传递指定的 DragSourceDragEvent
    void
    在注册到此 DragSourceContext 和关联的 DragSourceDragSourceListener 上调用 dragOver,并将指定的 DragSourceDragEvent 传递给它们。
    void
    在注册到此 DragSourceContext 和关联的 DragSourceDragSourceListener 上调用 dropActionChanged,并将指定的 DragSourceDragEvent 传递给它们。
    返回与此 DragSourceContext 关联的 Component
    返回当前自定义拖动 Cursor
    返回实例化此 DragSourceContextDragSource
    int
    返回 DnDConstants 的按位掩码,表示与此 DragSourceContext 关联的拖动操作的拖动源支持的放置操作集。
    返回与此 DragSourceContext 关联的 Transferable
    返回最初触发拖动的 DragGestureEvent
    void
    从此 DragSourceContext 中删除指定的 DragSourceListener
    void
    将此拖动操作的自定义光标设置为指定的 Cursor
    void
    通知对等方 TransferableDataFlavor 已更改。
    protected void
    updateCurrentCursor(int sourceAct, int targetAct, int status)
    如果默认拖动光标行为处于活动状态,则此方法为拖动源支持的指定操作、放置目标操作和状态设置默认拖动光标,否则此方法不执行任何操作。

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 字段详细信息

    • DEFAULT

      protected static final int DEFAULT
      updateCurrentCursor() 使用的 int 指示 Cursor 应更改为默认值(不删除)Cursor
      参见:
    • ENTER

      protected static final int ENTER
      updateCurrentCursor() 使用的 int 指示 Cursor 已进入 DropTarget
      参见:
    • OVER

      protected static final int OVER
      updateCurrentCursor() 使用的 int 指示 CursorDropTarget 之上。
      参见:
    • CHANGED

      protected static final int CHANGED
      updateCurrentCursor() 使用的 int 指示用户操作已更改。
      参见:
  • 构造方法详细信息

    • DragSourceContext

      public DragSourceContext(DragGestureEvent  trigger, Cursor  dragCursor, Image  dragImage, Point  offset, Transferable  t, DragSourceListener  dsl)
      DragSource 调用,此构造函数创建一个新的 DragSourceContext,给定此拖动的 DragSourceContextPeer,触发拖动的 DragGestureEvent,用于拖动的初始 Cursor,一个(可选)Image 在拖动发生时显示,偏移量Image 起源于触发事件瞬间的热点,Transferable 主题数据,以及在拖放操作期间使用的 DragSourceListener
      如果 DragSourceContextPeernull,则抛出 NullPointerException
      如果 DragGestureEventnull,则抛出 NullPointerException
      如果 Cursornull,则不会抛出异常,并且会为此拖动操作激活默认的拖动光标行为。
      如果 Imagenull 则不会抛出异常。
      如果 Image 不是 null 并且偏移量是 null NullPointerException 则抛出。
      如果 Transferablenull,则抛出 NullPointerException
      如果 DragSourceListenernull 则不会抛出异常。
      参数:
      trigger - 触发事件
      dragCursor - 此拖动操作的初始 Cursor 或默认光标处理的 null;有关拖放期间光标处理机制的更多详细信息,请参见 类级别文档
      dragImage - 要拖动的 Image(或 null
      offset - 图像原点与触发事件瞬间热点的偏移量
      t - Transferable
      dsl - DragSourceListener
      抛出:
      IllegalArgumentException - 如果与触发事件关联的 Componentnull
      IllegalArgumentException - 如果触发事件的 DragSourcenull
      IllegalArgumentException - 如果触发事件的拖动动作是 DnDConstants.ACTION_NONE
      IllegalArgumentException - 如果与触发事件关联的 DragGestureRecognizer 的源操作等于 DnDConstants.ACTION_NONE
      NullPointerException - 如果 dscp、trigger 或 t 为 null,或者如果 dragImage 为非 null 且 offset 为 null
  • 方法详情

    • getDragSource

      public DragSource  getDragSource()
      返回实例化此 DragSourceContextDragSource
      返回:
      实例化这个 DragSourceContextDragSource
    • getComponent

      public Component  getComponent()
      返回与此 DragSourceContext 关联的 Component
      返回:
      开始拖动的 Component
    • getTrigger

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

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

      public void setCursor(Cursor  c)
      将此拖动操作的自定义光标设置为指定的 Cursor 。如果指定的 Cursornull ,则默认拖动光标行为会为此拖动操作激活,否则会被停用。
      参数:
      c - 此拖动操作的初始 Cursor,或默认光标处理的 null;有关拖放期间光标处理的更多详细信息,请参见 类级别文档
    • getCursor

      public Cursor  getCursor()
      返回当前自定义拖动 Cursor
      返回:
      当前自定义拖动 Cursor ,如果已设置则返回 null
      参见:
    • addDragSourceListener

      public void addDragSourceListener(DragSourceListener  dsl) throws TooManyListenersException
      如果还没有添加一个DragSourceListener到这个DragSourceContext。如果 DragSourceListener 已经存在,则此方法将抛出 TooManyListenersException
      参数:
      dsl - 要添加的 DragSourceListener。请注意,虽然 null 未被禁止,但作为参数是不可接受的。
      抛出:
      TooManyListenersException - 如果已经添加了 DragSourceListener
    • removeDragSourceListener

      public void removeDragSourceListener(DragSourceListener  dsl)
      从此 DragSourceContext 中删除指定的 DragSourceListener
      参数:
      dsl - 要移除的 DragSourceListener;请注意,虽然 null 未被禁止,但作为参数是不可接受的
    • transferablesFlavorsChanged

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

      public void dragEnter(DragSourceDragEvent  dsde)
      在注册到此 DragSourceContext 和关联的 DragSourceDragSourceListener 上调用 dragEnter,并将指定的 DragSourceDragEvent 传递给它们。
      指定者:
      dragEnter 在接口 DragSourceListener
      参数:
      dsde - DragSourceDragEvent
    • dragOver

      public void dragOver(DragSourceDragEvent  dsde)
      在注册到此 DragSourceContext 和关联的 DragSourceDragSourceListener 上调用 dragOver,并将指定的 DragSourceDragEvent 传递给它们。
      指定者:
      dragOver 在接口 DragSourceListener
      参数:
      dsde - DragSourceDragEvent
    • dragExit

      public void dragExit(DragSourceEvent  dse)
      在注册到此 DragSourceContext 和关联的 DragSourceDragSourceListener 上调用 dragExit,并将指定的 DragSourceEvent 传递给它们。
      指定者:
      dragExit 在接口 DragSourceListener
      参数:
      dse - DragSourceEvent
    • dropActionChanged

      public void dropActionChanged(DragSourceDragEvent  dsde)
      在注册到此 DragSourceContext 和关联的 DragSourceDragSourceListener 上调用 dropActionChanged,并将指定的 DragSourceDragEvent 传递给它们。
      指定者:
      dropActionChanged 在接口 DragSourceListener
      参数:
      dsde - DragSourceDragEvent
    • dragDropEnd

      public void dragDropEnd(DragSourceDropEvent  dsde)
      在注册到此 DragSourceContext 和关联的 DragSourceDragSourceListener 上调用 dragDropEnd,并将指定的 DragSourceDropEvent 传递给它们。
      指定者:
      dragDropEnd 在接口 DragSourceListener
      参数:
      dsde - DragSourceDropEvent
    • dragMouseMoved

      public void dragMouseMoved(DragSourceDragEvent  dsde)
      在与此 DragSourceContext 关联的 DragSource 注册的 DragSourceMotionListener 上调用 dragMouseMoved,并传递指定的 DragSourceDragEvent
      指定者:
      dragMouseMoved 在接口 DragSourceMotionListener
      参数:
      dsde - DragSourceDragEvent
      自从:
      1.4
    • getTransferable

      public Transferable  getTransferable()
      返回与此 DragSourceContext 关联的 Transferable
      返回:
      Transferable
    • updateCurrentCursor

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