Module java.desktop
Package java.awt.dnd
package java.awt.dnd
拖放是许多图形用户界面系统中发现的直接操作手势,它提供了一个机制,用于在GUI中与呈现元素逻辑关联的两个实体之间传输信息。通常由人类用户使用适当的输入设备进行物理手势驱动,拖放提供了一种机制,使用户在在GUI中导航过程中对任何后续数据传输的可能结果提供持续反馈,并提供任何后续数据协商和传输的设施。
此包定义了在Java中执行拖放操作所需的类和接口。它为拖动源和放置目标定义了类,以及用于传输正在拖动的数据的事件。此包还提供了一种方式,在整个拖放操作期间向用户提供视觉反馈。
典型的拖放操作可以分解为以下状态(不完全按顺序):
DragSource
与GUI中的某个呈现元素(Component
)关联,以启动一些潜在的Transferable
数据的拖放操作。- 1个或多个
DropTarget
与GUI中的呈现元素(组件)关联,可能能够消耗Transferable
数据类型。 - 从
DragSource
获取DragGestureRecognizer
,并与Component
关联,以跟踪和识别用户在Component
上进行的任何拖动手势。 - 用户在
Component
上进行拖动手势,注册的DragGestureRecognizer
检测到,并通知其DragGestureListener
。注意:尽管此API始终将拖放操作的刺激指为人类用户的物理手势,但这并不排除在适当实现
DragSource
的情况下以编程方式驱动的DnD操作。此包含有用于识别鼠标设备手势的抽象类MouseDragGestureRecognizer
。平台可能提供其他抽象子类以支持其他输入设备或特定Component
类语义。 DragGestureListener
导致DragSource
代表用户启动拖放操作,可能会使GUI光标动画化和/或呈现操作主题的Image
。- 当用户在GUI中的
Component
上带有关联的DropTarget
进行手势导航时,DragSource
接收通知以提供“拖动结束”反馈效果,DropTarget
接收通知以提供基于支持的操作和涉及的数据类型的“拖动下方”反馈效果。
手势本身在GUI层次结构中移动逻辑光标,与GUI组件的几何形状相交,可能导致逻辑“拖动”光标进入、穿过并随后离开Component
和关联的DropTarget
。
DragSource
对象向用户展示“拖动结束”反馈,通常通过动画化与逻辑光标关联的GUI Cursor
来实现。
DropTarget
对象向用户展示“拖动下方”反馈,通常通过将动画渲染到其关联的GUI Component
下方的GUI光标来实现。
反馈效果的确定以及数据传输的最终成功或失败(如果发生)是根据以下参数化的:
- 用户选择的由
DragSource
和DropTarget
支持的传输“操作”:复制、移动或引用(链接)。 DragSource
提供的数据类型集合与DropTarget
可理解的数据类型集合的交集。- 当用户终止拖动操作时,通常会导致成功的放置,
DragSource
和DropTarget
都会接收包含并导致与DragSource
关联的信息通过Transferable
对象进行类型协商和传输的通知。
- 自版本:
- 1.2
-
ClassDescription在DnD操作期间,用户可能希望将操作主题放置在对用户当前不可见的可滚动GUI控件区域上。此类包含表示由拖放操作执行的操作类型的常量值。当特定
DragGestureRecognizer
检测到平台相关的拖动启动手势发生在其正在跟踪的Component
上时,DragGestureEvent
将传递给DragGestureListener
的dragGestureRecognized()方法。用于接收拖动手势事件的监听器接口。DragGestureRecognizer
是用于指定与特定Component
关联的平台相关监听器的抽象基类,以识别平台相关的拖动启动手势。DragSource
是负责启动拖放操作的实体,可以在多种场景中使用:每个JVM的默认实例在该JVM的生命周期内。用于接收拖动源事件的抽象适配器类。DragSourceContext
类负责管理拖放协议的启动方。DragSourceDragEvent
从DragSourceContextPeer
通过DragSourceContext
传递到注册了该DragSourceContext
及其关联DragSource
的DragSourceListener
。DragSourceDropEvent
从DragSourceContextPeer
通过DragSourceContext
传递到注册了该DragSourceContext
及其关联DragSource
的DragSourceListener
的dragDropEnd
方法。此类是DragSourceDragEvent
和DragSourceDropEvent
的基类。DragSourceListener
为拖放操作的发起者定义了事件接口,用于跟踪用户手势的状态,并在整个拖放操作期间向用户提供适当的“拖动结束”反馈。用于在拖动操作期间接收鼠标移动事件的监听器接口。当Component
希望在拖放操作期间接受放置时,DropTarget
与Component
关联。此受保护的嵌套类实现自动滚动用于接收放置目标事件的抽象适配器类。每当与拖放操作关联的逻辑光标与与DropTarget
关联的Component
的可见几何形状重合时,将创建一个DropTargetContext
。DropTargetDragEvent
通过其dragEnter()和dragOver()方法传递给DropTargetListener
。DropTargetDropEvent
通过DropTargetListener
的drop()方法传递。DropTargetEvent
是DropTargetDragEvent
和DropTargetDropEvent
的基类。DropTargetListener
接口是由DropTarget
类用于提供涉及主题DropTarget
的DnD操作通知的回调接口。此异常由java.awt.dnd包中的各种方法抛出。DragGestureRecognizer
的此抽象子类为基于鼠标手势定义了一个DragGestureRecognizer
。