模块 java.desktop

包 java.awt.dnd


java.awt.dnd
拖放是一种在许多图形用户界面系统中发现的直接操作手势,它提供了一种机制,可以在逻辑上与 GUI 中的表示元素相关联的两个实体之间传输信息。通常由使用适当输入设备的人类用户的物理手势驱动,拖放提供了一种机制,可以在 GUI 中的表示元素导航期间向用户提供有关任何后续数据传输的可能结果的连续反馈,以及为任何后续数据协商和传输提供的设施。

该包定义了在 Java 中执行拖放操作所需的类和接口。它定义了拖动源和放置目标的类,以及用于传输被拖动数据的事件。该包还提供了一种在整个拖放操作期间向用户提供视觉反馈的方法。

典型的拖放操作可以分解为以下状态(不完全按顺序):

  • DragSource 出现,与 GUI 中的某些表示元素 (Component) 相关联,以启动对某些潜在 Transferable 数据的拖放操作。
  • 1 个或多个 DropTarget (s) 出现/消失,与 GUI(组件)中的表示元素相关联,可能使用 Transferable 数据类型。
  • DragGestureRecognizerDragSource 获得并与 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) 中。

反馈效果的确定以及数据传输的最终成功或失败(如果发生)参数化如下:

  • 通过用户选择的传输“操作”,DragSourceDropTarget 均支持:复制、移动或引用(链接)。
  • 通过 DragSource 提供的数据类型集与 DropTarget 可理解的数据类型集的交集。
  • 当用户终止拖动操作时,通常会导致成功放置,DragSourceDropTarget 都会收到通知,其中包括通过 Transferable 对象与 DragSource 关联的信息的类型协商和传输。
自从:
1.2
  • 描述
    在 DnD 操作期间,用户可能希望将操作的主题放在用户当前不可见的可滚动 GUI 控件的区域上。
    此类包含表示拖放操作要执行的操作类型的常量值。
    当特定的 DragGestureRecognizer 检测到它正在跟踪的 Component 上发生了平台相关的拖动启动手势时,DragGestureEvent 将传递给 DragGestureListener 的 dragGestureRecognized() 方法。
    用于接收拖动手势事件的监听接口。
    DragGestureRecognizer 是一个抽象基类,用于规范依赖于平台的监听器,可以与特定的 Component 关联,以便识别依赖于平台的拖动启动手势。
    DragSource 是负责启动拖放操作的实体,可用于多种场景: 在 JVM 的生命周期内,每个 JVM 1 个默认实例。
    用于接收拖动源事件的抽象适配器类。
    DragSourceContext 类负责管理拖放协议的发起端。
    DragSourceDragEventDragSourceContextPeer 通过 DragSourceContext 传送到向该 DragSourceContext 及其关联的 DragSource 注册的 DragSourceListener
    DragSourceDropEventDragSourceContextPeer 传递,通过 DragSourceContext ,到 DragSourceListenerdragDropEnd 方法注册到那个 DragSourceContext 及其关联的 DragSource
    此类是 DragSourceDragEventDragSourceDropEvent 的基类。
    DragSourceListener 为拖放操作的发起者定义了事件接口,以跟踪用户手势的状态,并在整个拖放操作过程中向用户提供适当的“拖过”反馈。
    用于在拖动操作期间接收鼠标移动事件的监听接口。
    Component 希望在拖放操作期间接受拖放时,DropTargetComponent 相关联。
    这个受保护的内部类实现了自动滚动
    用于接收放置目标事件的抽象适配器类。
    只要与拖放操作相关联的逻辑光标与与 DropTarget 相关联的 Component 的可见几何图形重合,就会创建 DropTargetContext
    DropTargetDragEvent 通过其 dragEnter() 和 dragOver() 方法传送到 DropTargetListener
    DropTargetDropEvent 通过 DropTargetListener drop() 方法交付。
    DropTargetEventDropTargetDragEventDropTargetDropEvent 的基类。
    DropTargetListener 接口是 DropTarget 类用于提供涉及主题 DropTarget 的 DnD 操作通知的回调接口。
    此异常由 java.awt.dnd 包中的各种方法抛出。
    DragGestureRecognizer 的这个抽象子类为基于鼠标的手势定义了一个 DragGestureRecognizer