- 所有已实现的接口:
Serializable
DragSource 是负责启动拖放操作的实体,可用于多种场景:
- 在 JVM 的生命周期内,每个 JVM 有 1 个默认实例。
- 每个类的潜在拖动启动器对象(例如 TextField)1 个实例。 [取决于实现]
- 每个特定
Component的实例或与 GUI 中的Component实例关联的应用程序特定对象 1 个。 [取决于实施] - 其他一些任意关联。 [取决于实现]
DragSource 后,还应获得 DragGestureRecognizer 以将 DragSource 与特定的 Component 相关联。
用户手势的初始解释以及随后开始的拖动操作是实现 Component 的责任,通常由 DragGestureRecognizer 实现。
当出现拖动手势时,应调用 DragSource 的 startDrag() 方法,以便处理用户的导航手势并传递拖放协议通知。 DragSource 应只允许单个拖放操作在任何时候是当前的,并且应通过抛出 IllegalDnDOperationException 来拒绝任何进一步的 startDrag() 请求,直到现有操作完成。
startDrag() 方法调用 createDragSourceContext() 方法来实例化适当的 DragSourceContext 并将 DragSourceContextPeer 与其相关联。
如果拖放系统由于某种原因无法启动拖动操作,startDrag() 方法会抛出一个 java.awt.dnd.InvalidDnDOperationException 来表示这种情况。通常,当底层平台系统未处于启动拖动的状态或指定的参数无效时,会抛出此异常。
请注意,在拖动过程中,在拖动操作开始时由源公开的操作集可能不会更改,直到操作完成。对于DragSource,操作在操作期间是恒定的。
- 自从:
- 1.2
- 参见:
-
字段摘要
字段修饰符和类型Field描述static final Cursor默认Cursor与复制操作一起使用,指示当前允许放置。static final Cursor用于复制操作的默认Cursor指示当前不允许放置。static final Cursor默认Cursor与链接操作一起使用,指示当前允许丢弃。static final Cursor默认Cursor与链接操作一起使用,指示当前不允许丢弃。static final Cursor默认Cursor与移动操作一起使用,指示当前允许放置。static final Cursor默认Cursor与移动操作一起使用,指示当前不允许放置。 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述void将指定的DragSourceListener添加到此DragSource以在使用此DragSource启动的拖动操作期间接收拖动源事件。void将指定的DragSourceMotionListener添加到此DragSource以在使用此DragSource启动的拖动操作期间接收拖动运动事件。createDefaultDragGestureRecognizer(Component c, int actions, DragGestureListener dgl) 创建一个新的DragGestureRecognizer为这个DragSource实现DragGestureRecognizer的默认抽象子类,并在新创建的对象上设置指定的Component和DragGestureListener。<T extends DragGestureRecognizer>
TcreateDragGestureRecognizer(Class<T> recognizerAbstractClass, Component c, int actions, DragGestureListener dgl) 创建一个新的DragGestureRecognizer实现DragGestureRecognizer的指定抽象子类,并在新创建的对象上设置指定的Component和DragGestureListener。protected DragSourceContextcreateDragSourceContext(DragGestureEvent dgl, Cursor dragCursor, Image dragImage, Point imageOffset, Transferable t, DragSourceListener dsl) 创建DragSourceContext来处理当前的拖动操作。static DragSource获取与底层平台关联的DragSource对象。获取使用此DragSource注册的所有DragSourceListener。获取使用此DragSource注册的所有DragSourceMotionListener。static int返回拖动手势运动阈值。此方法返回此DragSource的FlavorMap。<T extends EventListener>
T[]getListeners(Class<T> listenerType) 获取当前在此DragSource上注册为FooListener的所有对象。static boolean报告拖动Image支持在底层平台上是否可用。void从此DragSource中删除指定的DragSourceListener。void从此DragSource中删除指定的DragSourceMotionListener。voidstartDrag(DragGestureEvent trigger, Cursor dragCursor, Transferable transferable, DragSourceListener dsl) 开始拖动,给定启动拖动的DragGestureEvent、要使用的初始Cursor、拖动的Transferable主题数据和DragSourceListener。voidstartDrag(DragGestureEvent trigger, Cursor dragCursor, Transferable transferable, DragSourceListener dsl, FlavorMap flavorMap) 开始拖动,给定启动拖动的DragGestureEvent、要使用的初始Cursor、拖动的Transferable主题数据、DragSourceListener和FlavorMap。voidstartDrag(DragGestureEvent trigger, Cursor dragCursor, Image dragImage, Point dragOffset, Transferable transferable, DragSourceListener dsl) 开始拖动,给定启动拖动的DragGestureEvent、要使用的初始Cursor、要拖动的Image、触发时Image原点与Cursor热点的偏移量、拖动的主题数据,以及DragSourceListener。voidstartDrag(DragGestureEvent trigger, Cursor dragCursor, Image dragImage, Point imageOffset, Transferable transferable, DragSourceListener dsl, FlavorMap flavorMap) 开始拖动,给定启动拖动的DragGestureEvent,要使用的初始Cursor,要拖动的Image,触发瞬间Image原点与Cursor热点的偏移量,拖动的Transferable主题数据,DragSourceListener和FlavorMap。
-
字段详细信息
-
DefaultCopyDrop
默认Cursor与复制操作一起使用,指示当前允许放置。null如果GraphicsEnvironment.isHeadless()返回true。- 参见:
-
DefaultMoveDrop
默认Cursor与移动操作一起使用,指示当前允许放置。null如果GraphicsEnvironment.isHeadless()返回true。- 参见:
-
DefaultLinkDrop
默认Cursor与链接操作一起使用,指示当前允许丢弃。null如果GraphicsEnvironment.isHeadless()返回true。- 参见:
-
DefaultCopyNoDrop
用于复制操作的默认Cursor指示当前不允许放置。null如果GraphicsEnvironment.isHeadless()返回true。- 参见:
-
DefaultMoveNoDrop
默认Cursor与移动操作一起使用,指示当前不允许放置。null如果GraphicsEnvironment.isHeadless()返回true。- 参见:
-
DefaultLinkNoDrop
默认Cursor与链接操作一起使用,指示当前不允许丢弃。null如果GraphicsEnvironment.isHeadless()返回true。- 参见:
-
-
构造方法详细信息
-
DragSource
创建一个新的DragSource。- 抛出:
HeadlessException- 如果 GraphicsEnvironment.isHeadless() 返回 true- 参见:
-
-
方法详情
-
getDefaultDragSource
获取与底层平台关联的DragSource对象。- 返回:
- 平台 DragSource
- 抛出:
HeadlessException- 如果 GraphicsEnvironment.isHeadless() 返回 true- 参见:
-
isDragImageSupported
public static boolean isDragImageSupported()报告拖动Image支持在底层平台上是否可用。- 返回:
- 如果在此平台上提供拖动图像支持
-
startDrag
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- 启动拖动的DragGestureEventdragCursor- 此拖动操作的初始Cursor或默认光标处理的null;有关拖放期间光标处理机制的更多详细信息,请参见 DragSourceContextdragImage- 要拖动的图像或nullimageOffset- 触发时刻Image原点与Cursor热点的偏移量transferable- 拖动的主题数据dsl-DragSourceListenerflavorMap- 要使用的FlavorMap,或null- 抛出:
InvalidDnDOperationException- 如果拖放系统无法启动拖动操作,或者如果用户尝试在现有拖动操作仍在执行时开始拖动
-
startDrag
public void startDrag(DragGestureEvent trigger, Cursor dragCursor, Transferable transferable, DragSourceListener dsl, FlavorMap flavorMap) throws InvalidDnDOperationException 开始拖动,给定启动拖动的DragGestureEvent、要使用的初始Cursor、拖动的Transferable主题数据、DragSourceListener和FlavorMap。- 参数:
trigger- 启动拖动的DragGestureEventdragCursor- 此拖动操作的初始Cursor或默认光标处理的null;有关拖放期间光标处理机制的更多详细信息,请参见 DragSourceContexttransferable- 拖动的主题数据dsl-DragSourceListenerflavorMap- 要使用的FlavorMap或null- 抛出:
InvalidDnDOperationException- 如果拖放系统无法启动拖动操作,或者如果用户尝试在现有拖动操作仍在执行时开始拖动
-
startDrag
public void startDrag(DragGestureEvent trigger, Cursor dragCursor, Image dragImage, Point dragOffset, Transferable transferable, DragSourceListener dsl) throws InvalidDnDOperationException 开始拖动,给定启动拖动的DragGestureEvent、要使用的初始Cursor、要拖动的Image、触发时Image原点与Cursor热点的偏移量、拖动的主题数据,以及DragSourceListener。- 参数:
trigger- 启动拖动的DragGestureEventdragCursor- 此拖动操作的初始Cursor或默认光标处理的null;有关拖放期间光标处理机制的更多详细信息,请参见 DragSourceContextdragImage- 要拖动的Image或nulldragOffset- 触发时刻Image原点与Cursor热点的偏移量transferable- 拖动的主题数据dsl-DragSourceListener- 抛出:
InvalidDnDOperationException- 如果拖放系统无法启动拖动操作,或者如果用户尝试在现有拖动操作仍在执行时开始拖动
-
startDrag
public void startDrag(DragGestureEvent trigger, Cursor dragCursor, Transferable transferable, DragSourceListener dsl) throws InvalidDnDOperationException 开始拖动,给定启动拖动的DragGestureEvent、要使用的初始Cursor、拖动的Transferable主题数据和DragSourceListener。- 参数:
trigger- 启动拖动的DragGestureEventdragCursor- 此拖动操作的初始Cursor或默认光标处理的null;有关拖放期间光标处理机制的更多详细信息,请参阅 DragSourceContext 类transferable- 拖动的主题数据dsl-DragSourceListener- 抛出:
InvalidDnDOperationException- 如果拖放系统无法启动拖动操作,或者如果用户尝试在现有拖动操作仍在执行时开始拖动
-
createDragSourceContext
protected DragSourceContext createDragSourceContext(DragGestureEvent dgl, Cursor dragCursor, Image dragImage, Point imageOffset, Transferable t, DragSourceListener dsl) 创建DragSourceContext来处理当前的拖动操作。要合并一个新的
DragSourceContext子类,子类DragSource并覆盖此方法。如果
dragImage是null,则不会使用图像来表示此拖动操作的拖动反馈,但不会抛出NullPointerException。如果
dsl是null,则没有向创建的DragSourceContext注册拖动源监听器,但不会抛出NullPointerException。- 参数:
dgl- 触发拖动的DragGestureEventdragCursor- 此拖动操作的初始Cursor或默认光标处理的null;有关拖放期间光标处理机制的更多详细信息,请参阅 DragSourceContext 类dragImage- 要拖动的Image或nullimageOffset-Image原点与触发瞬间光标热点的偏移量t- 拖动的主题数据dsl-DragSourceListener- 返回:
DragSourceContext- 抛出:
NullPointerException- 如果dscp是nullNullPointerException- 如果dgl是nullNullPointerException- 如果dragImage不是null并且imageOffset是nullNullPointerException- 如果t是nullIllegalArgumentException- 如果与触发事件关联的Component是null。IllegalArgumentException- 如果触发事件的DragSource是null。IllegalArgumentException- 如果触发事件的拖动动作是DnDConstants.ACTION_NONE。IllegalArgumentException- 如果与触发事件关联的DragGestureRecognizer的源操作等于DnDConstants.ACTION_NONE。
-
getFlavorMap
此方法返回此DragSource的FlavorMap。- 返回:
-
这个
DragSource的FlavorMap
-
createDragGestureRecognizer
public <T extends DragGestureRecognizer > T createDragGestureRecognizer(Class <T> recognizerAbstractClass, Component c, int actions, DragGestureListener dgl) 创建一个新的DragGestureRecognizer实现DragGestureRecognizer的指定抽象子类,并在新创建的对象上设置指定的Component和DragGestureListener。- 类型参数:
T- 要创建的DragGestureRecognizer的类型- 参数:
recognizerAbstractClass- 请求的抽象类型c-Component目标actions- 允许的源拖动操作dgl-DragGestureListener通知- 返回:
-
新的
DragGestureRecognizer或null如果Toolkit.createDragGestureRecognizer方法没有可用于请求的DragGestureRecognizer子类的实现并返回null
-
createDefaultDragGestureRecognizer
public DragGestureRecognizer createDefaultDragGestureRecognizer(Component c, int actions, DragGestureListener dgl) 创建一个新的DragGestureRecognizer为这个DragSource实现DragGestureRecognizer的默认抽象子类,并在新创建的对象上设置指定的Component和DragGestureListener。对于此DragSource,默认值为MouseDragGestureRecognizer。- 参数:
c- 识别器的Component目标actions- 允许的源操作dgl-DragGestureListener通知- 返回:
-
新的
DragGestureRecognizer或null如果Toolkit.createDragGestureRecognizer方法没有可用于请求的DragGestureRecognizer子类的实现并返回null
-
addDragSourceListener
将指定的DragSourceListener添加到此DragSource以在使用此DragSource启动的拖动操作期间接收拖动源事件。如果指定了null监听器,则不会采取任何操作,也不会抛出异常。- 参数:
dsl- 要添加的DragSourceListener- 自从:
- 1.4
- 参见:
-
removeDragSourceListener
从此DragSource中删除指定的DragSourceListener。如果指定了null监听器,则不会采取任何操作,也不会抛出异常。如果参数指定的监听器之前未添加到此DragSource,则不采取任何操作并且不抛出异常。- 参数:
dsl- 要删除的DragSourceListener- 自从:
- 1.4
- 参见:
-
getDragSourceListeners
获取使用此DragSource注册的所有DragSourceListener。- 返回:
-
所有这些
DragSource的DragSourceListener或空数组(如果当前没有注册此类监听器) - 自从:
- 1.4
- 参见:
-
addDragSourceMotionListener
将指定的DragSourceMotionListener添加到此DragSource以在使用此DragSource启动的拖动操作期间接收拖动运动事件。如果指定了null监听器,则不会采取任何操作,也不会抛出异常。- 参数:
dsml- 要添加的DragSourceMotionListener- 自从:
- 1.4
- 参见:
-
removeDragSourceMotionListener
从此DragSource中删除指定的DragSourceMotionListener。如果指定了null监听器,则不会采取任何操作,也不会抛出异常。如果参数指定的监听器之前未添加到此DragSource,则不采取任何操作并且不抛出异常。- 参数:
dsml- 要删除的DragSourceMotionListener- 自从:
- 1.4
- 参见:
-
getDragSourceMotionListeners
获取使用此DragSource注册的所有DragSourceMotionListener。- 返回:
-
所有这些
DragSource的DragSourceMotionListener或空数组(如果当前没有注册此类监听器) - 自从:
- 1.4
- 参见:
-
getListeners
获取当前在此DragSource上注册为FooListener的所有对象。FooListener是使用addFooListener方法注册的。- 类型参数:
T- 监听器对象的类型- 参数:
listenerType- 请求的监听器类型;此参数应指定从java.util.EventListener派生的接口- 返回:
-
在此
DragSource上注册为FooListener的所有对象的数组,如果没有添加此类监听器,则为空数组 - 抛出:
ClassCastException- 如果listenerType没有指定实现java.util.EventListener的类或接口- 自从:
- 1.4
- 参见:
-
getDragThreshold
public static int getDragThreshold()返回拖动手势运动阈值。拖动手势运动阈值定义了MouseDragGestureRecognizers 的推荐行为。如果系统属性
awt.dnd.drag.threshold设置为正整数,则此方法返回系统属性的值;否则,如果 Java 平台的实现提供并支持相关的桌面属性,则此方法返回该属性的值;否则此方法返回一些默认值。可以使用java.awt.Toolkit.getDesktopProperty("DnD.gestureMotionThreshold")查询相关的桌面属性。- 返回:
- 拖动手势运动阈值
- 自从:
- 1.5
- 参见:
-