Javar拖放
Posted MatroLeox
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javar拖放相关的知识,希望对你有一定的参考价值。
拖放
graph LR
dragSource(拖拽源)
dropTarget(拖放目标)
dragSource -->|拖放意图和数据| dropTarget
1、拖放意图(常量类DnDConstants)有:
- ACTION_COPY
- ACTION_MOVE
- ACTION_COPY_OR_MOVE
- ACTION_LINK
- ACTION_NONE
2、拖放数据是一个Transferable对象(用于数据传递),它封装一个MIME类型。更多介绍请看相关内容。
拖拽源——DragSource
// 1、获得平台相关的DragSource对象
DragSource ds = DragSource.getDefaultDragSource();
// 2、将组件转换成拖拽源
ds.createDfaultDragGestureRecognizer(
Component c, // 要转换的组件
int actionIntent, // 拖拽意图
DragGestureListener dgl // 拖拽监听器
);
GestureRecognizer 手势识别器
拖拽监听器
new DragGestureListener() {
@Override
public void dragGestureRecognized(DragGestureEvent event) {
// 处理一些事件
// 继续拖拽操作
event.startDrag(
Cursor dragCursor, // 拖拽时光标样式
Transferable transferable, // 要拖拽的数据
... // DragSourceListener dsl // 拖拽后的监听器
);
}
};
拖放目标——DropTarget
DropTarget dt = new DropTarget(
Component c, // 拖放目标组件
int actionIntent, // 可接受的拖放意图
DropTargetListener dtl // 拖放监听器
);
拖放监听器
new DropTargetAdapter() {
@Override
public void drop(DropTargetDropEvent event) {
// 当进入方法前?时会阻塞当前线程
event.getTransferable(); // 取出拖放数据
event.dropComplete(true); // 释放阻塞线程
}
};
以上是关于Javar拖放的主要内容,如果未能解决你的问题,请参考以下文章