java.awt.dnd

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

public interface DropTargetListener
     
extends EventListener

DropTargetListener 接口是 DropTarget 类所使用的回调接口,用于提供所涉及的 DropTarget 的 DnD 操作的通知。在整个 Drag 和 Drop 操作中,可以实现此接口的方法,向用户提供 "drag under" 的可视化反馈。

通过实现该接口,并使用 DropTarget 注册该接口,可以创建一个 listener 对象。当 drag 进入、移上或退出该 DropTarget 的 drop 位置的可操作部分时,当 drop 操作改变时,以及当 drop 操作发生时,调用 listener 对象的相关方法,并将 DropTargetEvent 传递到该方法。

DropTarget 的 drop 位置的可操作部分是关联 Component 几何结构的一部分,该部分不会被重叠的顶层窗口或另一 Z-order(顺序)更高的并具有关联的活动 DropTargetComponent 遮掩。

在 drag 过程中,通过对 DropTargetDragEvent 实例(该实例被传递给 listener 的方法)调用 getTransferable(),可以检索与当前 drag 操作相关的数据。

注意,DropTargetDragEvent 实例上的 getTransferable() 应该只在各自 listener 的方法中调用,并且应该在该方法返回前从返回的 Transferable 检索所有必需的数据。

从以下版本开始:
1.2

方法摘要
 void dragEnter(DropTargetDragEvent dtde)
          正在进行 drag 操作时调用,此时鼠标指针进入 DropTarget(使用此 listener 注册)的 drop 位置的可操作部分。
 void dragExit(DropTargetEvent dte)
          正在进行 drag 操作时调用,此时鼠标指针已退出 DropTarget(使用此 listener 注册)的 drop 位置的可操作部分。
 void dragOver(DropTargetDragEvent dtde)
          正在进行 drag 操作时调用,此时鼠标指针仍然处于 DropTarget(使用此 listener 注册)的 drop 位置的可操作部分。
 void drop(DropTargetDropEvent dtde)
          在 drag 操作已终止时调用,此时 drop 处于 DropTarget(使用此 listener 注册)的 drop 位置的可操作部分。
 void dropActionChanged(DropTargetDragEvent dtde)
          在用户已经修改了当前 drop 操作后调用。
 

方法详细信息

dragEnter

void dragEnter(DropTargetDragEvent dtde)
正在进行 drag 操作时调用,此时鼠标指针进入 DropTarget(使用此 listener 注册)的 drop 位置的可操作部分。

参数:
dtde - DropTargetDragEvent

dragOver

void dragOver(DropTargetDragEvent dtde)
正在进行 drag 操作时调用,此时鼠标指针仍然处于 DropTarget(使用此 listener 注册)的 drop 位置的可操作部分。

参数:
dtde - DropTargetDragEvent

dropActionChanged

void dropActionChanged(DropTargetDragEvent dtde)
在用户已经修改了当前 drop 操作后调用。

参数:
dtde - DropTargetDragEvent

dragExit

void dragExit(DropTargetEvent dte)
正在进行 drag 操作时调用,此时鼠标指针已退出 DropTarget(使用此 listener 注册)的 drop 位置的可操作部分。

参数:
dte - DropTargetEvent

drop

void drop(DropTargetDropEvent dtde)
在 drag 操作已终止时调用,此时 drop 处于 DropTarget(使用此 listener 注册)的 drop 位置的可操作部分。

此方法负责保证与操作相关的数据传输。DropTargetDropEvent 提供获得 Transferable 对象的手段,该对象表示要转换的数据对象。

利用此方法,DropTargetListener 将通过带 DropTargetDropEvent 参数的 acceptDrop(int dropAction) 或 rejectDrop() 方法来接受或拒绝 drop 操作。

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

完成 drop 之后,需要此方法实现指明 drop 成功还是失败,这通过传递合适的 booleanDropTargetDropEvent 的 dropComplete(boolean success) 方法来完成。

注:应该在调用 DropTargetDropEvent 的 dropComplete(boolean success) 方法之前完成数据传输。在此之后,调用由 DropTargetDropEvent.getTransferable() 返回的 Transferable 的 getTransferData() 方法,确保只有在数据传输限于本地时才会成功;也就是说,只有 DropTargetDropEvent.isLocalTransfer() 返回 true 时才会成功。否则,调用的行为是与实现相关的。

参数:
dtde - DropTargetDropEvent