模块  java.desktop

Package java.awt.dnd

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

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

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

  • DragSource成立,与GUI中的一些表示元素( Component )相关联,以启动一些潜在的Transferable数据的拖放。
  • 1个或多个DropTarget进入/不存在,与GUI(组件)中的表示元素相关联,可能消耗Transferable数据类型。
  • DragGestureRecognizer从所得DragSource并且与相关联的Component ,以便跟踪和由用户在识别任何拖动启动动作Component
  • 用户在Component执行拖动手势,已注册DragGestureRecognizer ,并通知其DragGestureListener

    注意:尽管此API始终将拖放操作的刺激引用为人类用户的物理手势,但这并不排除在给定适当实现DragSource情况下以编程方式驱动的DnD操作。 该软件包包含用于识别鼠标设备手势的抽象类MouseDragGestureRecognizer 平台可以提供其他抽象子类以支持其他输入设备或特定的Component类语义。

  • DragGestureListener使DragSource代表用户启动拖放操作,可能为GUI光标设置动画和/或渲染作为操作Image的项目的Image
  • 当用户手势在GUI中导航Component (s)与关联的DropTarget (s)时, DragSource接收通知以提供“拖过”反馈效果,并且DropTarget (s)接收通知以提供“拖拽” “基于所支持的操作和所涉及的数据类型的反馈效果。

手势本身在GUI层级上移动逻辑光标,与GUI组件的几何形状相交,可能导致逻辑“拖动”光标进入,交叉,并且随后离开Component (s)和相关联的DropTarget (s)。

DragSource对象向用户显示“拖过”反馈,在典型情况下通过动画化与逻辑光标相关联的GUI Cursor

在典型情况下,通过将动画渲染到GUI光标下的相关GUI Component (s)中,对象显示“ DropTarget拖动”反馈给用户。

如果出现反馈效应的确定以及数据传输的最终成功或失败,则参数化如下:

  • 通过用户选择的传输“操作”,并由DragSourceDropTarget :复制,移动或参考(链接)。
  • DragSource提供的数据类型集的DragSourceDragSource的数据类型DropTarget
  • 当用户终止拖动操作(通常导致成功丢弃)时, DragSourceDropTarget都会通过DragSource DropTarget接收包含并通过类型协商和传输与DragSource相关联的信息的Transferable
从以下版本开始:
1.2