public interface DropTargetListener
DropTargetListener
接口是 DropTarget
类所使用的回调接口,用于提供所涉及的 DropTarget
的 DnD 操作的通知。在整个 Drag 和 Drop 操作中,可以实现此接口的方法,向用户提供 "drag under" 的可视化反馈。
通过实现该接口,并使用 DropTarget
注册该接口,可以创建一个 listener 对象。当 drag 进入、移上或退出该 DropTarget
的 drop 位置的可操作部分时,当 drop 操作改变时,以及当 drop 操作发生时,调用 listener 对象的相关方法,并将 DropTargetEvent
传递到该方法。
DropTarget
的 drop 位置的可操作部分是关联 Component
几何结构的一部分,该部分不会被重叠的顶层窗口或另一 Z-order(顺序)更高的并具有关联的活动 DropTarget
的 Component
遮掩。
在 drag 过程中,通过对 DropTargetDragEvent
实例(该实例被传递给 listener 的方法)调用 getTransferable()
,可以检索与当前 drag 操作相关的数据。
注意,DropTargetDragEvent
实例上的 getTransferable()
应该只在各自 listener 的方法中调用,并且应该在该方法返回前从返回的 Transferable
检索所有必需的数据。
方法摘要 | |
---|---|
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 操作后调用。 |
方法详细信息 |
---|
void dragEnter(DropTargetDragEvent dtde)
DropTarget
(使用此 listener 注册)的 drop 位置的可操作部分。
dtde
-
DropTargetDragEvent
void dragOver(DropTargetDragEvent dtde)
DropTarget
(使用此 listener 注册)的 drop 位置的可操作部分。
dtde
-
DropTargetDragEvent
void dropActionChanged(DropTargetDragEvent dtde)
dtde
-
DropTargetDragEvent
void dragExit(DropTargetEvent dte)
DropTarget
(使用此 listener 注册)的 drop 位置的可操作部分。
dte
-
DropTargetEvent
void drop(DropTargetDropEvent dtde)
DropTarget
(使用此 listener 注册)的 drop 位置的可操作部分。
此方法负责保证与操作相关的数据传输。DropTargetDropEvent
提供获得 Transferable
对象的手段,该对象表示要转换的数据对象。
利用此方法,DropTargetListener
将通过带 DropTargetDropEvent
参数的 acceptDrop(int dropAction) 或 rejectDrop() 方法来接受或拒绝 drop 操作。
在 acceptDrop() 之后(而不是之前),可以调用 DropTargetDropEvent
的 getTransferable() 方法,还可以通过返回的 Transferable
的 getTransferData() 方法执行数据传输。
完成 drop 之后,需要此方法实现指明 drop 成功还是失败,这通过传递合适的 boolean
给 DropTargetDropEvent
的 dropComplete(boolean success) 方法来完成。
注:应该在调用 DropTargetDropEvent
的 dropComplete(boolean success) 方法之前完成数据传输。在此之后,调用由 DropTargetDropEvent.getTransferable()
返回的 Transferable
的 getTransferData() 方法,确保只有在数据传输限于本地时才会成功;也就是说,只有 DropTargetDropEvent.isLocalTransfer()
返回 true
时才会成功。否则,调用的行为是与实现相关的。
dtde
-
DropTargetDropEvent