java.lang.Object
java.awt.dnd.DragSourceContext
- 所有已实现的接口:
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
将光标设置为适合拖放操作的当前状态。例如,如果用户选择了 移动动作 ,并且指针位于接受移动操作的目标上方,则会显示默认移动光标。当指针位于不接受传输的区域上方时,将显示默认的“不放置”光标。
当通过 setCursor(java.awt.Cursor)
方法设置自定义游标时,将禁用此默认处理机制。当禁用默认处理时,开发人员有责任通过监听 DragSource
事件和调用 setCursor()
方法来保持游标最新。或者,您可以通过提供 DragSource
和 DragSourceContext
类的自定义实现来提供自定义光标行为。
- 自从:
- 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
指示Cursor
在DropTarget
之上。 -
构造方法总结
构造方法构造方法描述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
和关联的DragSource
的DragSourceListener
上调用dragDropEnd
,并将指定的DragSourceDropEvent
传递给它们。void
dragEnter
(DragSourceDragEvent dsde) 在注册到此DragSourceContext
和关联的DragSource
的DragSourceListener
上调用dragEnter
,并将指定的DragSourceDragEvent
传递给它们。void
dragExit
(DragSourceEvent dse) 在注册到此DragSourceContext
和关联的DragSource
的DragSourceListener
上调用dragExit
,并将指定的DragSourceEvent
传递给它们。void
在与此DragSourceContext
关联的DragSource
注册的DragSourceMotionListener
上调用dragMouseMoved
,并传递指定的DragSourceDragEvent
。void
dragOver
(DragSourceDragEvent dsde) 在注册到此DragSourceContext
和关联的DragSource
的DragSourceListener
上调用dragOver
,并将指定的DragSourceDragEvent
传递给它们。void
在注册到此DragSourceContext
和关联的DragSource
的DragSourceListener
上调用dropActionChanged
,并将指定的DragSourceDragEvent
传递给它们。返回与此DragSourceContext
关联的Component
。返回当前自定义拖动Cursor
。返回实例化此DragSourceContext
的DragSource
。int
返回DnDConstants
的按位掩码,表示与此DragSourceContext
关联的拖动操作的拖动源支持的放置操作集。返回与此DragSourceContext
关联的Transferable
。返回最初触发拖动的DragGestureEvent
。void
从此DragSourceContext
中删除指定的DragSourceListener
。void
将此拖动操作的自定义光标设置为指定的Cursor
。void
通知对等方Transferable
的DataFlavor
已更改。protected void
updateCurrentCursor
(int sourceAct, int targetAct, int status) 如果默认拖动光标行为处于活动状态,则此方法为拖动源支持的指定操作、放置目标操作和状态设置默认拖动光标,否则此方法不执行任何操作。
-
字段详细信息
-
DEFAULT
protected static final int DEFAULTupdateCurrentCursor() 使用的int
指示Cursor
应更改为默认值(不删除)Cursor
。- 参见:
-
ENTER
protected static final int ENTERupdateCurrentCursor() 使用的int
指示Cursor
已进入DropTarget
。- 参见:
-
OVER
protected static final int OVERupdateCurrentCursor() 使用的int
指示Cursor
在DropTarget
之上。- 参见:
-
CHANGED
protected static final int CHANGEDupdateCurrentCursor() 使用的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
。
如果DragSourceContextPeer
是null
,则抛出NullPointerException
。
如果DragGestureEvent
是null
,则抛出NullPointerException
。
如果Cursor
为null
,则不会抛出异常,并且会为此拖动操作激活默认的拖动光标行为。
如果Image
是null
则不会抛出异常。
如果Image
不是null
并且偏移量是null NullPointerException
则抛出。
如果Transferable
是null
,则抛出NullPointerException
。
如果DragSourceListener
是null
则不会抛出异常。- 参数:
trigger
- 触发事件dragCursor
- 此拖动操作的初始Cursor
或默认光标处理的null
;有关拖放期间光标处理机制的更多详细信息,请参见 类级别文档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 为 null,或者如果 dragImage 为非 null 且 offset 为 null
-
-
方法详情
-
getDragSource
返回实例化此DragSourceContext
的DragSource
。- 返回:
-
实例化这个
DragSourceContext
的DragSource
-
getComponent
返回与此DragSourceContext
关联的Component
。- 返回:
-
开始拖动的
Component
-
getTrigger
返回最初触发拖动的DragGestureEvent
。- 返回:
- 触发拖动的事件
-
getSourceActions
public int getSourceActions()返回DnDConstants
的按位掩码,表示与此DragSourceContext
关联的拖动操作的拖动源支持的放置操作集。- 返回:
- 拖动源支持的放置动作
-
setCursor
将此拖动操作的自定义光标设置为指定的Cursor
。如果指定的Cursor
是null
,则默认拖动光标行为会为此拖动操作激活,否则会被停用。- 参数:
c
- 此拖动操作的初始Cursor
,或默认光标处理的null
;有关拖放期间光标处理的更多详细信息,请参见 类级别文档
-
getCursor
返回当前自定义拖动Cursor
。- 返回:
-
当前自定义拖动
Cursor
,如果已设置则返回null
。 - 参见:
-
addDragSourceListener
如果还没有添加一个DragSourceListener
到这个DragSourceContext
。如果DragSourceListener
已经存在,则此方法将抛出TooManyListenersException
。- 参数:
dsl
- 要添加的DragSourceListener
。请注意,虽然null
未被禁止,但作为参数是不可接受的。- 抛出:
TooManyListenersException
- 如果已经添加了DragSourceListener
-
removeDragSourceListener
从此DragSourceContext
中删除指定的DragSourceListener
。- 参数:
dsl
- 要移除的DragSourceListener
;请注意,虽然null
未被禁止,但作为参数是不可接受的
-
transferablesFlavorsChanged
public void transferablesFlavorsChanged()通知对等方Transferable
的DataFlavor
已更改。 -
dragEnter
在注册到此DragSourceContext
和关联的DragSource
的DragSourceListener
上调用dragEnter
,并将指定的DragSourceDragEvent
传递给它们。- 指定者:
dragEnter
在接口DragSourceListener
中- 参数:
dsde
-DragSourceDragEvent
-
dragOver
在注册到此DragSourceContext
和关联的DragSource
的DragSourceListener
上调用dragOver
,并将指定的DragSourceDragEvent
传递给它们。- 指定者:
dragOver
在接口DragSourceListener
中- 参数:
dsde
-DragSourceDragEvent
-
dragExit
在注册到此DragSourceContext
和关联的DragSource
的DragSourceListener
上调用dragExit
,并将指定的DragSourceEvent
传递给它们。- 指定者:
dragExit
在接口DragSourceListener
中- 参数:
dse
-DragSourceEvent
-
dropActionChanged
在注册到此DragSourceContext
和关联的DragSource
的DragSourceListener
上调用dropActionChanged
,并将指定的DragSourceDragEvent
传递给它们。- 指定者:
dropActionChanged
在接口DragSourceListener
中- 参数:
dsde
-DragSourceDragEvent
-
dragDropEnd
在注册到此DragSourceContext
和关联的DragSource
的DragSourceListener
上调用dragDropEnd
,并将指定的DragSourceDropEvent
传递给它们。- 指定者:
dragDropEnd
在接口DragSourceListener
中- 参数:
dsde
-DragSourceDropEvent
-
dragMouseMoved
在与此DragSourceContext
关联的DragSource
注册的DragSourceMotionListener
上调用dragMouseMoved
,并传递指定的DragSourceDragEvent
。- 指定者:
dragMouseMoved
在接口DragSourceMotionListener
中- 参数:
dsde
-DragSourceDragEvent
- 自从:
- 1.4
-
getTransferable
返回与此DragSourceContext
关联的Transferable
。- 返回:
Transferable
-
updateCurrentCursor
protected void updateCurrentCursor(int sourceAct, int targetAct, int status) 如果默认拖动光标行为处于活动状态,则此方法为拖动源支持的指定操作、放置目标操作和状态设置默认拖动光标,否则此方法不执行任何操作。- 参数:
sourceAct
- 拖动源支持的动作targetAct
- 放置目标动作status
-DEFAULT
、ENTER
、OVER
、CHANGED
字段之一
-