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