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 intupdateCurrentCursor() 使用的int指示用户操作已更改。protected static final intupdateCurrentCursor() 使用的int指示Cursor应更改为默认值(不删除)Cursor。protected static final intupdateCurrentCursor() 使用的int指示Cursor已进入DropTarget。protected static final intupdateCurrentCursor() 使用的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传递给它们。voiddragEnter(DragSourceDragEvent dsde) 在注册到此DragSourceContext和关联的DragSource的DragSourceListener上调用dragEnter,并将指定的DragSourceDragEvent传递给它们。voiddragExit(DragSourceEvent dse) 在注册到此DragSourceContext和关联的DragSource的DragSourceListener上调用dragExit,并将指定的DragSourceEvent传递给它们。void在与此DragSourceContext关联的DragSource注册的DragSourceMotionListener上调用dragMouseMoved,并传递指定的DragSourceDragEvent。voiddragOver(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 voidupdateCurrentCursor(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-Transferabledsl-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字段之一
-