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光标来实现。

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

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