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拖放的主要内容,如果未能解决你的问题,请参考以下文章

在两个片段之间拖放?

javar入门第一节课内容梳理

套接字编程中的Java拖放问题

如何拖放 recyclerView 元素?

javar入门——基本数据类型

如何在回收站视图上启用和禁用拖放