public class DragSource extends Object implements Serializable
DragSource
是DragSource
操作的实体,可用于多种情况:
Component
,或与相关联的应用特定对象Component
在GUI实例。 [实施依赖] DragSource
获得,一个DragGestureRecognizer
也应获得的关联DragSource
与特定Component
。
用户手势的初步解释以及随后开始的拖拽操作是实现Component的Component
,通常由DragGestureRecognizer
。
当拖动手势发生时, DragSource
的startDrag()方法应以引起用户的浏览操作并传递Drag处理和Drop协议通知调用。 一个DragSource
只允许在任何一个时间进行一次拖放操作,并且通过抛出一个IllegalDnDOperationException
来拒绝任何进一步的startDrag()请求,直到现存操作完成为止。
startDrag()方法调用createDragSourceContext()方法来实例化一个合适的DragSourceContext
并将DragSourceContextPeer与之相关DragSourceContextPeer
。
如果拖放系统由于某种原因无法启动拖动操作,那么startDrag()方法会引发一个java.awt.dnd.InvalidDnDOperationException
来表示这种情况。 通常,当底层平台系统不处于启动拖动状态或指定的参数无效时,会抛出此异常。
请注意,在拖动期间,在拖动操作开始时由源公开的操作集可能不会更改,直到操作完成。 操作(一个或多个)是用于操作的相对于该持续时间恒定DragSource
。
Modifier and Type | Field and Description |
---|---|
static Cursor |
DefaultCopyDrop
与复制操作一起使用的默认值
Cursor ,指示当前允许丢弃。
|
static Cursor |
DefaultCopyNoDrop
默认的
Cursor 与复制操作一起使用,指示当前不允许丢弃。
|
static Cursor |
DefaultLinkDrop
与链接操作一起使用的默认值
Cursor ,指示当前允许丢弃。
|
static Cursor |
DefaultLinkNoDrop
默认值
Cursor 用于链接操作,指示当前不允许丢弃。
|
static Cursor |
DefaultMoveDrop
默认值为
Cursor ,用于指示当前允许下降的移动操作。
|
static Cursor |
DefaultMoveNoDrop
使用默认值
Cursor 进行移动操作,指示当前不允许丢弃。
|
Constructor and Description |
---|
DragSource()
创建一个新的
DragSource 。
|
Modifier and Type | Method and Description |
---|---|
void |
addDragSourceListener(DragSourceListener dsl)
添加指定的
DragSourceListener 这个
DragSource 在本所发起的拖动操作接收拖动源事件
DragSource 。
|
void |
addDragSourceMotionListener(DragSourceMotionListener dsml)
添加指定的
DragSourceMotionListener 这个
DragSource 在本所发起的拖动操作接收的拖动移动事件
DragSource 。
|
DragGestureRecognizer |
createDefaultDragGestureRecognizer(Component c, int actions, DragGestureListener dgl)
创建一个新
DragGestureRecognizer 实现的默认抽象子类
DragGestureRecognizer 这个
DragSource ,并设置指定的
Component 和
DragGestureListener 新创建的对象上。
|
<T extends DragGestureRecognizer> |
createDragGestureRecognizer(类<T> recognizerAbstractClass, Component c, int actions, DragGestureListener dgl)
创建一个新
DragGestureRecognizer 实现的指定抽象子类
DragGestureRecognizer ,并设置指定的
Component 和
DragGestureListener 新创建的对象上。
|
protected DragSourceContext |
createDragSourceContext(java.awt.dnd.peer.DragSourceContextPeer dscp, DragGestureEvent dgl, Cursor dragCursor, Image dragImage, Point imageOffset, Transferable t, DragSourceListener dsl)
创建
DragSourceContext 来处理当前的拖动操作。
|
static DragSource |
getDefaultDragSource()
获取与底层平台相关
DragSource 对象。
|
DragSourceListener[] |
getDragSourceListeners()
获取所有
DragSourceListener 这个注册小号
DragSource 。
|
DragSourceMotionListener[] |
getDragSourceMotionListeners()
获得所有
DragSourceMotionListener 注册此
DragSource 。
|
static int |
getDragThreshold()
返回拖动手势运动阈值。
|
FlavorMap |
getFlavorMap()
此方法返回
FlavorMap 的
DragSource 。
|
<T extends EventListener> |
getListeners(类<T> listenerType)
获取当前注册为
FooListener 的所有对象在此
DragSource 。
|
static boolean |
isDragImageSupported()
报告是否在基础平台上提供拖动
Image 支持。
|
void |
removeDragSourceListener(DragSourceListener dsl)
删除指定的
DragSourceListener 从这个
DragSource 。
|
void |
removeDragSourceMotionListener(DragSourceMotionListener dsml)
删除指定的
DragSourceMotionListener 从这个
DragSource 。
|
void |
startDrag(DragGestureEvent trigger, Cursor dragCursor, Image dragImage, Point dragOffset, Transferable transferable, DragSourceListener dsl)
开始一拖,考虑到
DragGestureEvent 启动拖动,初步
Cursor 用,
Image 拖动时,该偏移
Image 从的热点起源
Cursor 在触发,拖动的目标数据的瞬间,和
DragSourceListener 。
|
void |
startDrag(DragGestureEvent trigger, Cursor dragCursor, Image dragImage, Point imageOffset, Transferable transferable, DragSourceListener dsl, FlavorMap flavorMap)
开始一拖,考虑到
DragGestureEvent 启动拖动,初步
Cursor 用,
Image 拖动,偏移量的
Image 从的热点起源
Cursor 在扳机的瞬间,
Transferable 拖动的目标数据,
DragSourceListener 和
FlavorMap 。
|
void |
startDrag(DragGestureEvent trigger, Cursor dragCursor, Transferable transferable, DragSourceListener dsl)
开始一拖,考虑到
DragGestureEvent 启动拖动,初步
Cursor 用,
Transferable 拖动的目标数据和
DragSourceListener 。
|
void |
startDrag(DragGestureEvent trigger, Cursor dragCursor, Transferable transferable, DragSourceListener dsl, FlavorMap flavorMap)
开始一拖,考虑到
DragGestureEvent 启动拖动,初步
Cursor 用,
Transferable 拖动的目标数据,该
DragSourceListener 和
FlavorMap 。
|
public static final Cursor DefaultCopyDrop
Cursor
进行复制操作,指示当前允许丢弃。
null
如果GraphicsEnvironment.isHeadless()
返回true
。
public static final Cursor DefaultMoveDrop
Cursor
用于指示当前允许下降的移动操作。
null
如果GraphicsEnvironment.isHeadless()
返回true
。
public static final Cursor DefaultLinkDrop
Cursor
与链接操作一起使用,表示当前允许丢弃。
null
如果GraphicsEnvironment.isHeadless()
返回true
。
public static final Cursor DefaultCopyNoDrop
Cursor
用于复制操作,指示当前不允许丢弃。
null
如果GraphicsEnvironment.isHeadless()
返回true
。
public static final Cursor DefaultMoveNoDrop
Cursor
,用于指示当前不允许下降的移动操作。
null
如果GraphicsEnvironment.isHeadless()
返回true
。
public static final Cursor DefaultLinkNoDrop
Cursor
用于链接操作,指示当前不允许丢弃。
null
如果GraphicsEnvironment.isHeadless()
返回true
。
public DragSource() throws HeadlessException
DragSource
。
HeadlessException
- 如果GraphicsEnvironment.isHeadless()返回true
GraphicsEnvironment.isHeadless()
public static DragSource getDefaultDragSource()
DragSource
对象。
HeadlessException
- 如果GraphicsEnvironment.isHeadless()返回true
GraphicsEnvironment.isHeadless()
public static boolean isDragImageSupported()
Image
支持。
public void startDrag(DragGestureEvent trigger, Cursor dragCursor, Image dragImage, Point imageOffset, Transferable transferable, DragSourceListener dsl, FlavorMap flavorMap) throws InvalidDnDOperationException
DragGestureEvent
启动拖动,初步
Cursor
用,
Image
拖动,偏移量的
Image
从的热点起源
Cursor
在扳机的瞬间,
Transferable
拖动的目标数据,
DragSourceListener
和
FlavorMap
。
trigger
- 发起拖动的
DragGestureEvent
dragCursor
- 这个拖动操作的初始Cursor
Cursor或默认光标处理的null
;
有关拖放时光标处理机制的更多详细信息,请参阅DragSourceContext
dragImage
- 图片拖动或
null
imageOffset
-
Image
起源于触发时刻
Cursor
热点的偏移量
transferable
- 拖动的主题数据
dsl
-
DragSourceListener
flavorMap
- 要使用的
FlavorMap
,或
null
InvalidDnDOperationException
- 如果拖放系统无法启动拖动操作,或者如果用户尝试在现有拖动操作仍在执行时启动拖动
public void startDrag(DragGestureEvent trigger, Cursor dragCursor, Transferable transferable, DragSourceListener dsl, FlavorMap flavorMap) throws InvalidDnDOperationException
DragGestureEvent
启动拖动,初步
Cursor
用,
Transferable
拖动的目标数据,该
DragSourceListener
和
FlavorMap
。
trigger
- 发起拖动的
DragGestureEvent
dragCursor
- 这个拖动操作的初始Cursor
Cursor或默认光标处理的null
;
有关拖放时光标处理机制的更多详细信息,请参阅DragSourceContext
transferable
- 拖动的主题数据
dsl
-
DragSourceListener
flavorMap
- 要使用的
FlavorMap
或
null
InvalidDnDOperationException
- 如果拖放系统无法启动拖动操作,或者如果用户尝试在现有拖动操作仍在执行时启动拖动
public void startDrag(DragGestureEvent trigger, Cursor dragCursor, Image dragImage, Point dragOffset, Transferable transferable, DragSourceListener dsl) throws InvalidDnDOperationException
DragGestureEvent
启动拖动,初步
Cursor
用,
Image
拖动时,该偏移
Image
从的热点起源
Cursor
在触发,拖动的目标数据的瞬间,和
DragSourceListener
。
trigger
- 发起拖动的
DragGestureEvent
dragCursor
- 这个拖动操作的初始Cursor
null
,默认光标处理为null
;
有关拖放中光标处理机制的更多详细信息,请参阅DragSourceContext
dragImage
-
Image
拖动或
null
dragOffset
-
Image
起点与触发时刻
Cursor
热点的偏移
transferable
- 拖动的主题数据
dsl
-
DragSourceListener
InvalidDnDOperationException
- 如果拖放系统无法启动拖动操作,或者如果用户尝试在现有拖动操作仍在执行时启动拖动
public void startDrag(DragGestureEvent trigger, Cursor dragCursor, Transferable transferable, DragSourceListener dsl) throws InvalidDnDOperationException
DragGestureEvent
启动拖动,初步
Cursor
用,
Transferable
拖动的目标数据和
DragSourceListener
。
trigger
- 发起拖动的
DragGestureEvent
dragCursor
- 此拖拽操作的初始Cursor
Cursor或默认光标处理的null
;
请参阅DragSourceContext类,了解拖放过程中光标处理机制的更多细节
transferable
- 拖动的主题数据
dsl
-
DragSourceListener
InvalidDnDOperationException
- 如果拖放系统无法启动拖动操作,或者如果用户尝试在现有拖动操作仍在执行时启动拖动
protected DragSourceContext createDragSourceContext(java.awt.dnd.peer.DragSourceContextPeer dscp, DragGestureEvent dgl, Cursor dragCursor, Image dragImage, Point imageOffset, Transferable t, DragSourceListener dsl)
DragSourceContext
以处理当前的拖动操作。
要结合一个新的DragSourceContext
子类,子类DragSource
并覆盖此方法。
如果dragImage
为null
,则无法使用图像表示对此拖动操作的反馈拖动,但不会抛出NullPointerException
。
如果dsl
为null
,则不会在创建的DragSourceContext
中注册拖动源侦听器,但不会抛出NullPointerException
。
dscp
- 这个拖动的
DragSourceContextPeer
dgl
-
DragGestureEvent
触发了拖动
dragCursor
- 这个拖动操作的初始Cursor
Cursor或默认光标处理的null
;
请参阅DragSourceContext类,了解拖放过程中光标处理机制的更多细节
dragImage
-
Image
拖动或
null
imageOffset
- 在触发时刻的
Image
起始点与光标热点的偏移量
t
- 拖动的主题数据
dsl
-
DragSourceListener
DragSourceContext
NullPointerException
- 如果
dscp
是
null
NullPointerException
- 如果
dgl
是
null
NullPointerException
- 如果
dragImage
不是
null
和
imageOffset
是
null
NullPointerException
- 如果
t
是
null
IllegalArgumentException
-如果
Component
与触发事件相关联的是
null
。
IllegalArgumentException
-如果
DragSource
触发事件是
null
。
IllegalArgumentException
- 如果触发事件的拖动操作是
DnDConstants.ACTION_NONE
。
IllegalArgumentException
- 如果与触发事件相关
DragGestureRecognizer
DragGestureRecognizer的源操作等于
DnDConstants.ACTION_NONE
。
public FlavorMap getFlavorMap()
FlavorMap
为此
DragSource
。
FlavorMap
为这个
DragSource
public <T extends DragGestureRecognizer> T createDragGestureRecognizer(类<T> recognizerAbstractClass, Component c, int actions, DragGestureListener dgl)
DragGestureRecognizer
实现的指定抽象子类
DragGestureRecognizer
,并设置指定的
Component
和
DragGestureListener
新创建的对象上。
recognizerAbstractClass
- 请求的抽象类型
actions
- 允许的源拖动操作
c
-
Component
目标
dgl
-
DragGestureListener
通知
DragGestureRecognizer
或
null
如果
Toolkit.createDragGestureRecognizer
方法没有实现可用于请求的
DragGestureRecognizer
子类,并返回
null
public DragGestureRecognizer createDefaultDragGestureRecognizer(Component c, int actions, DragGestureListener dgl)
DragGestureRecognizer
实现的默认抽象子类DragGestureRecognizer
这个DragSource
,并设置指定的Component
和DragGestureListener
新创建的对象上。
对于这个DragSource
,默认是MouseDragGestureRecognizer
。
c
-
Component
目标
actions
- 允许的源操作
dgl
- 要通知的
DragGestureListener
DragGestureRecognizer
或
null
如果
Toolkit.createDragGestureRecognizer
方法没有实现可用于请求的
DragGestureRecognizer
子类,并返回
null
public void addDragSourceListener(DragSourceListener dsl)
DragSourceListener
这个DragSource
在本所发起的拖动操作接收拖动源事件DragSource
。
如果指定了一个null
监听器,则不会采取任何操作,也不会抛出任何异常。
dsl
- 要添加的
DragSourceListener
removeDragSourceListener(java.awt.dnd.DragSourceListener)
,
getDragSourceListeners()
public void removeDragSourceListener(DragSourceListener dsl)
DragSourceListener
从这个DragSource
。
如果指定了一个null
侦听器,则不会采取任何操作,也不会抛出任何异常。
如果参数指定的侦听器以前未添加到此DragSource
,则不会执行任何操作,也不会抛出异常。
dsl
- 要删除的
DragSourceListener
addDragSourceListener(java.awt.dnd.DragSourceListener)
,
getDragSourceListeners()
public DragSourceListener[] getDragSourceListeners()
DragSourceListener
注册此
DragSource
。
DragSource
的
DragSourceListener
s或一个空数组,如果没有这样的听众当前注册
addDragSourceListener(java.awt.dnd.DragSourceListener)
,
removeDragSourceListener(java.awt.dnd.DragSourceListener)
public void addDragSourceMotionListener(DragSourceMotionListener dsml)
DragSourceMotionListener
这个DragSource
在本所发起的拖动操作接收的拖动移动事件DragSource
。
如果指定了一个null
监听器,则不会采取任何操作,也不会抛出任何异常。
dsml
- 要添加的
DragSourceMotionListener
removeDragSourceMotionListener(java.awt.dnd.DragSourceMotionListener)
,
getDragSourceMotionListeners()
public void removeDragSourceMotionListener(DragSourceMotionListener dsml)
DragSourceMotionListener
从这个DragSource
。
如果指定了一个null
监听器,则不会采取任何操作,也不会抛出任何异常。
如果参数指定的侦听器以前未添加到此DragSource
,则不会执行任何操作,也不会抛出任何异常。
dsml
- 要删除的
DragSourceMotionListener
addDragSourceMotionListener(java.awt.dnd.DragSourceMotionListener)
,
getDragSourceMotionListeners()
public DragSourceMotionListener[] getDragSourceMotionListeners()
DragSourceMotionListener
的所有
DragSource
。
DragSource
的
DragSourceMotionListener
s或一个空数组,如果没有这样的听众当前注册
addDragSourceMotionListener(java.awt.dnd.DragSourceMotionListener)
,
removeDragSourceMotionListener(java.awt.dnd.DragSourceMotionListener)
public <T extends EventListener> T[] getListeners(类<T> listenerType)
FooListener
的所有对象在此DragSource
。
FooListener
使用addFooListener
。
listenerType
- 所请求的听众的类型;
此参数应指定从java.util.EventListener
下降的java.util.EventListener
DragSource
上注册为
FooListener
的所有对象的数组,如果没有添加这样的侦听器,则是一个空数组
ClassCastException
- 如果
listenerType
没有指定实现java.util.EventListener的类或
java.util.EventListener
getDragSourceListeners()
,
getDragSourceMotionListeners()
public static int getDragThreshold()
MouseDragGestureRecognizer
秒。
如果系统属性awt.dnd.drag.threshold
设置为正整数,则此方法返回系统属性的值; 否则如果相关的桌面属性可用并且由Java平台的实现支持,则此方法返回该属性的值; 否则此方法返回一些默认值。 可以使用java.awt.Toolkit.getDesktopProperty("DnD.gestureMotionThreshold")
查询相关的桌面属性。
MouseDragGestureRecognizer