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