public class DragSourceContext extends Object implements DragSourceListener, DragSourceMotionListener, Serializable
DragSourceContext类负责管理拖放协议的发起方。 
       特别地,它负责管理拖动事件通知给DragSourceListeners和DragSourceMotionListeners ,并提供表示拖动操作的源数据的Transferable。 
        请注意, DragSourceContext本身实现了DragSourceListener和DragSourceMotionListener接口。 这是为了让平台端点( DragSourceContextPeer由创建的实例) DragSource通知DragSourceContext的状态变化在正在进行的操作。 这允许DragSourceContext对象自身插入平台和由拖动操作的启动器提供的侦听器之间。 
 默认情况下, DragSourceContext根据拖放操作的当前状态设置光标。 例如,如果用户选择了the move action ,并且指针在接受移动动作的目标上,则显示默认移动光标。 当指针位于不接受传输的区域上时,将显示默认的“不丢弃”光标。 
 当通过setCursor(java.awt.Cursor)方法设置自定义光标时,此默认处理机制将被禁用。 当默认处理被禁用时,开发人员有责任通过监听DragSource事件并调用setCursor()方法将光标保持最新。 或者,您可以通过提供DragSource和DragSourceContext类的自定义实现来提供自定义游标行为。 
DragSourceListener , DragSourceMotionListener , DnDConstants , Serialized Form 
       | Modifier and Type | Field and Description | 
|---|---|
| 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 and Description | 
|---|
| DragSourceContext(java.awt.dnd.peer.DragSourceContextPeer dscp, DragGestureEvent trigger, Cursor dragCursor, Image dragImage, Point offset, Transferable t, DragSourceListener dsl)
              从名为 
              DragSource,该构造函数创建一个新DragSourceContext给予DragSourceContextPeer此拖累,DragGestureEvent触发该Drag的初始Cursor要使用的拖累,(可选的)Image,同时拖动正在发生显示的偏移Image起源于触发事件瞬间的热点,Transferable主题数据,以及在DragSourceListener操作期间使用的DragSourceListener。 | 
| Modifier and Type | Method and Description | 
|---|---|
| void | addDragSourceListener(DragSourceListener dsl)
              添加 
              DragSourceListener这个DragSourceContext如果一个尚未加入。 | 
| void | dragDropEnd(DragSourceDropEvent dsde)
              致电 
              dragDropEnd在DragSourceListener注册该DragSourceContext和相关联的DragSource,并通过他们指定的DragSourceDropEvent。 | 
| void | dragEnter(DragSourceDragEvent dsde)
              致电 
              dragEnter在DragSourceListener注册该DragSourceContext和相关联的DragSource,并通过他们指定的DragSourceDragEvent。 | 
| void | dragExit(DragSourceEvent dse)
              致电 
              dragExit在DragSourceListener注册该DragSourceContext和相关联的DragSource,并通过他们指定的DragSourceEvent。 | 
| void | dragMouseMoved(DragSourceDragEvent dsde)
              致电 
              dragMouseMoved在DragSourceMotionListener注册与DragSource相关联的这个DragSourceContext,他们通过指定的DragSourceDragEvent。 | 
| void | dragOver(DragSourceDragEvent dsde)
              致电 
              dragOver在DragSourceListener注册该DragSourceContext和相关联的DragSource,并通过他们指定的DragSourceDragEvent。 | 
| void | dropActionChanged(DragSourceDragEvent dsde)
              致电 
              dropActionChanged在DragSourceListener注册该DragSourceContext和相关联的DragSource,并通过他们指定的DragSourceDragEvent。 | 
| Component | getComponent()
              返回 
              Component与此相关DragSourceContext。 | 
| Cursor | getCursor()
              返回当前拖动 
              Cursor。 | 
| DragSource | getDragSource()
              返回 
              DragSource认为这个实例DragSourceContext。 | 
| int | getSourceActions()
              返回 
              DnDConstants的按位掩码,表示与此DragSourceContext的拖动操作的拖动源支持的放置操作DragSourceContext。 | 
| Transferable | getTransferable()
              返回 
              Transferable与此相关DragSourceContext。 | 
| DragGestureEvent | getTrigger()
              返回 
              DragGestureEvent最初引发的阻力。 | 
| void | removeDragSourceListener(DragSourceListener dsl)
              删除指定的 
              DragSourceListener从这个DragSourceContext。 | 
| void | setCursor(Cursor c)
              将此拖动操作的光标设置为指定的 
              Cursor。 | 
| void | transferablesFlavorsChanged()
              通知对方 
              Transferable的DataFlavor已更改。 | 
| protected void | updateCurrentCursor(int sourceAct, int targetAct, int status)
              如果默认拖动光标行为处于活动状态,则此方法将为拖动源支持的指定操作,放置目标操作和状态设置默认拖动光标,否则此方法不执行任何操作。 
             | 
protected static final int DEFAULT
int由updateCurrentCursor()使用,表示 
           Cursor应该更改为默认(不下降) 
           Cursor 。 
          protected static final int ENTER
int由updateCurrentCursor()使用,表示 
           Cursor已经输入了 
           DropTarget 。 
          protected static final int OVER
int由updateCurrentCursor()使用,表示 
           Cursor超过了 
           DropTarget 。 
          protected static final int CHANGED
int由updateCurrentCursor(使用)的指示用户操作已经改变。 
          public DragSourceContext(java.awt.dnd.peer.DragSourceContextPeer dscp,
                         DragGestureEvent trigger,
                         Cursor dragCursor,
                         Image dragImage,
                         Point offset,
                         Transferable t,
                         DragSourceListener dsl) 
          DragSource ,该构造函数创建一个新DragSourceContext给予DragSourceContextPeer此拖累, DragGestureEvent触发该Drag的初始Cursor要使用的拖累,(可选的) Image ,同时拖动正在发生显示的偏移Image起始于触发事件瞬间的热点, Transferable主题数据,以及在DragSourceListener操作期间使用的DragSourceListener。 
           DragSourceContextPeer是null NullPointerException被抛出。 
           DragGestureEvent是null NullPointerException被抛出。 
           Cursor为null则抛出异常,并为此拖动操作激活默认拖动光标行为。 
           Image是null没有异常抛出。 
           Image不是null和偏移量是null NullPointerException抛出。 
           Transferable是null NullPointerException被抛出。 
           DragSourceListener是null没有异常抛出。 
          dscp - 这个拖动的 
            DragSourceContextPeer 
           trigger - 触发事件 
           dragCursor - 这个拖动操作的初始Cursor 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 DragGestureRecognizer的源操作等于 
            DnDConstants.ACTION_NONE 。 
           NullPointerException - 如果dscp,trigger或t为空,或者dragImage为非空,并且offset为null 
           public DragSource getDragSource()
DragSource ,实例化了这个 
           DragSourceContext 。 
          DragSource实例化了这个 
            DragSourceContext 
           public Component getComponent()
Component与此相关 
           DragSourceContext 。 
          Component开始拖动 
           public DragGestureEvent getTrigger()
DragGestureEvent最初引发的阻力。 
          public int getSourceActions()
DnDConstants的按位掩码,表示与此 
           DragSourceContext的拖动操作的拖动源支持的放置操作 
           DragSourceContext 。 
          public void setCursor(Cursor c)
Cursor 。 
           如果指定的Cursor为null ,则为此拖动操作启用默认拖动光标行为,否则将被禁用。 
          c - 此拖动操作的初始Cursor Cursor,或默认光标处理为null ; 
            有关拖放时光标处理的更多详细信息,请参阅class level documentation 
           public Cursor getCursor()
Cursor 。 
            
          Cursor 
           public void addDragSourceListener(DragSourceListener dsl) throws TooManyListenersException
DragSourceListener这个DragSourceContext如果一个尚未加入。 
           如果一个DragSourceListener已经存在,这个方法会抛出一个TooManyListenersException 。 
            
          dsl - 要添加的DragSourceListener 。 
            请注意,虽然null不禁止的,它不是作为一个参数接受。 
             
           TooManyListenersException - 如果已经添加了 
            DragSourceListener 
           public void removeDragSourceListener(DragSourceListener dsl)
DragSourceListener从这个 
           DragSourceContext 。 
          dsl - 要删除的DragSourceListener ; 
            注意,虽然null不禁止的,它不是作为一个参数可以接受 
           public void transferablesFlavorsChanged()
Transferable的 
           DataFlavor已更改。 
          public void dragEnter(DragSourceDragEvent dsde)
dragEnter在 
           DragSourceListener注册此 
           DragSourceContext和相关联的 
           DragSource ,并通过他们指定的 
           DragSourceDragEvent 。 
          dragEnter在界面 
            DragSourceListener 
           dsde - 
            DragSourceDragEvent 
           public void dragOver(DragSourceDragEvent dsde)
dragOver在 
           DragSourceListener注册该 
           DragSourceContext和相关联的 
           DragSource ,并通过他们指定的 
           DragSourceDragEvent 。 
          dragOver在界面 
            DragSourceListener 
           dsde - 
            DragSourceDragEvent 
           public void dragExit(DragSourceEvent dse)
dragExit在 
           DragSourceListener注册该 
           DragSourceContext和相关联的 
           DragSource ,并通过他们指定的 
           DragSourceEvent 。 
          dragExit在界面 
            DragSourceListener 
           dse - 
            DragSourceEvent 
           public void dropActionChanged(DragSourceDragEvent dsde)
dropActionChanged在 
           DragSourceListener这个注册小号 
           DragSourceContext及其关联 
           DragSource ,并通过他们指定的 
           DragSourceDragEvent 。 
          dropActionChanged在界面 
            DragSourceListener 
           dsde - 
            DragSourceDragEvent 
           public void dragDropEnd(DragSourceDropEvent dsde)
dragDropEnd在 
           DragSourceListener注册该 
           DragSourceContext和相关联的 
           DragSource ,并通过他们指定的 
           DragSourceDropEvent 。 
          dragDropEnd在界面 
            DragSourceListener 
           dsde - 
            DragSourceDropEvent 
           public void dragMouseMoved(DragSourceDragEvent dsde)
dragMouseMoved在 
           DragSourceMotionListener注册与 
           DragSource相关联的这个 
           DragSourceContext ,他们通过指定的 
           DragSourceDragEvent 。 
          dragMouseMoved在界面 
            DragSourceMotionListener 
           dsde - 
            DragSourceDragEvent 
           public Transferable getTransferable()
Transferable与此相关 
           DragSourceContext 。 
          Transferable 
           protected void updateCurrentCursor(int sourceAct,
                                   int targetAct,
                                   int status) 
          sourceAct - 拖动源支持的操作 
           targetAct - 放下目标动作 
           status -一个字段 
            DEFAULT , 
            ENTER , 
            OVER , 
            CHANGED 
            Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.