Java Drag& Drop from swing应用程序到自定义事件上的文件

时间:2017-02-14 14:56:07

标签: java swing drag-and-drop export

尝试从基于java swing的应用程序实现Drag& Drop支持,以导出用户选择的元素。在JPanel上,我使用各种东西来渲染一些用户界面。在某些时候,用户应该在该JPanel中的某个位置执行Shift-Left单击,然后将内容拖动到(例如)文件资源管理器。

我找到了有关如何添加基于拖动组件的拖放组件的各种教程。使用TransferHandler和Transferable删除,但无法弄清楚,如何在应用程序检测到Shift + Leftclick事件后实际启动Drag& Drop进程。 另外,我是对的,我应该首先在某个临时文件夹中创建导出的文件,然后将路径传递给transferable,然后以某种方式启动拖放过程?

1 个答案:

答案 0 :(得分:0)

使用MadProgrammer建议的example来管理解决问题。 另外,使用了DataFlavor.javaFileListFlavor。 dragGestureRecognized改变如下:

@Override
public void dragGestureRecognized(DragGestureEvent dge)
{
  if (!dge.getTriggerEvent().isShiftDown())
  {
    return;
  }

  // Create our transferable wrapper
  Transferable transferable = new FileTransferable(dataObjectsPanel.getDragExportFiles());

  // Start the "drag" process...
  DragSource ds = dge.getDragSource();
  ds.startDrag(dge, Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR), transferable, this);
}