Module  java.desktop

Package java.awt.dnd

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

此包定义了在Java中执行拖放操作所需的类和接口。 它定义了drag-source和drop-target的类,以及用于传输被拖动的数据的事件。 该包还提供了在拖放操作的持续时间内向用户提供视觉反馈的方法。

典型的拖放操作可以分解成以下状态(不是完全依次):

  • A DragSource存在,与GUI中的一些表示元素( Component )相关联,以启动一些潜在的Transferable数据的拖放。
  • 1或更多的DropTarget (s)进入/退出存在,与GUI(组件)中的表示元素相关联,潜在地能够消耗Transferable数据类型。
  • DragGestureRecognizer从所得DragSource并且与相关联的Component ,以便跟踪和由用户在识别任何拖动启动动作Component
  • 用户通过Component (其注册的DragGestureRecognizer检测到的拖动手势,并通知其DragGestureListener

    注意:虽然这个API一贯地指的是一个拖放操作是由人类用户进行的物理手势的刺激,但是在给出适当的DragSource实现的情况下,这并不排除编程驱动的DnD操作。 该包包含用于识别鼠标设备手势的抽象类MouseDragGestureRecognizer 其他抽象子类可以由平台提供,以支持其他输入设备或特定的Component类语义。

  • DragGestureListener导致DragSource代表用户启动拖放操作,可能动画化GUI Cursor和/或呈现作为操作Image的项目的Image
  • 当用户手势导航超过Component在具有相关联的GUI(或多个) DropTarget (S),所述DragSource接收以便提供“拖过”反馈效果通知,并且DropTarget (一个或多个),以提供“拖放在接收通知“反馈效应基于所支持的操作和所涉及的数据类型。

手势本身将逻辑游标移动通过GUI层次结构,与GUI组件的几何相交,可能导致逻辑“拖”光标进入,交叉,随后离开Component (s)和关联的DropTarget (s)。

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

DropTarget对象通过将动画渲染到GUI Cursor下的关联GUI Component ,在典型的情况下,向用户显示“Drag Under”反馈。

应该发生反馈效应的确定以及数据传输的最终成功或失败,参数如下:

  • 通过用户选择的传输“操作”,并由DragSourceDropTarget :复制,移动或引用(链接)支持。
  • DragSource提供的一组数据类型和DropTarget理解的数据类型DropTarget
  • 当用户终止拖动操作,通常导致一个成功的掉落,无论是DragSourceDropTarget接收通知包括,并导致类型的协商和的,与相关联的信息传送DragSource经由Transferable对象。
从以下版本开始:
1.2