Module java.desktop
Package java.awt.dnd

Interface DropTargetListener

所有超接口:
EventListener
所有已知实现类:
DropTarget, DropTargetAdapter

public interface DropTargetListener extends EventListener
DropTargetListener接口是由DropTarget类使用的回调接口,用于提供涉及主题DropTarget的DnD操作的通知。可以实现此接口的方法以提供“拖动下方”视觉反馈,以便在整个拖放操作期间向用户提供反馈。

通过实现接口创建一个监听器对象,然后将其注册到DropTarget中。当拖动进入、移动或退出该DropTarget的可操作部分时,当拖放操作更改时,以及当发生拖放时,将调用监听器对象中的相关方法,并将DropTargetEvent传递给它。

DropTarget的可操作部分是关联Component的几何形状的一部分,不被重叠的顶层窗口或由具有关联活动DropTarget的Z顺序较高的另一个Component所遮挡。

在拖动过程中,可以通过在传递给监听器方法的DropTargetDragEvent实例上调用getTransferable()来检索与当前拖动操作相关联的数据。

请注意,在DropTargetDragEvent实例上调用getTransferable()应仅在相应的监听器方法内调用,并且在该方法返回之前应从返回的Transferable中检索所有必要的数据。

自 JDK 版本:
1.2
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    当拖动操作正在进行时调用,当鼠标指针进入已向此监听器注册的DropTarget的可操作部分时。
    void
    当拖动操作正在进行时调用,当鼠标指针已退出已向此监听器注册的DropTarget的可操作部分时。
    void
    当拖动操作正在进行时调用,当鼠标指针仍位于已向此监听器注册的DropTarget的可操作部分上方时。
    void
    当拖动操作以在已向此监听器注册的DropTarget的可操作部分上进行放置而终止时调用。
    void
    如果用户修改了当前的放置手势,则调用。
  • Method Details

    • dragEnter

      void dragEnter(DropTargetDragEvent dtde)
      当拖动操作正在进行时调用,当鼠标指针进入已向此监听器注册的DropTarget的可操作部分时。
      参数:
      dtde - DropTargetDragEvent
    • dragOver

      void dragOver(DropTargetDragEvent dtde)
      当拖动操作正在进行时调用,当鼠标指针仍位于已向此监听器注册的DropTarget的可操作部分上方时。
      参数:
      dtde - DropTargetDragEvent
    • dropActionChanged

      void dropActionChanged(DropTargetDragEvent dtde)
      如果用户修改了当前的放置手势,则调用。
      参数:
      dtde - DropTargetDragEvent
    • dragExit

      void dragExit(DropTargetEvent dte)
      当拖动操作正在进行时调用,当鼠标指针已退出已向此监听器注册的DropTarget的可操作部分时。
      参数:
      dte - DropTargetEvent
    • drop

      void drop(DropTargetDropEvent dtde)
      当拖动操作以在已向此监听器注册的DropTarget的可操作部分上进行放置而终止时调用。

      此方法负责执行与手势相关联的数据传输。 DropTargetDropEvent提供了一种获取代表要传输的数据对象的Transferable对象的方法。

      从此方法开始,DropTargetListener应通过DropTargetDropEvent参数的acceptDrop(int dropAction)或rejectDrop()方法接受或拒绝放置。

      在acceptDrop()之后,但在之前,可以调用DropTargetDropEvent的getTransferable()方法,并且可以通过返回的Transferable的getTransferData()方法执行数据传输。

      在放置完成后,此方法的实现需要通过向DropTargetDropEvent的dropComplete(boolean success)方法传递适当的boolean来表示放置的成功/失败。

      注意: 数据传输应在调用DropTargetDropEvent的dropComplete(boolean success)方法之前完成。之后,仅当数据传输为本地时,即仅当DropTargetDropEvent.isLocalTransfer()返回true时,才保证通过DropTargetDropEvent.getTransferable()返回的Transferable的getTransferData()方法成功。否则,调用的行为取决于实现。

      参数:
      dtde - DropTargetDropEvent