尝试从基于java swing的应用程序实现Drag& Drop支持,以导出用户选择的元素。在JPanel上,我使用各种东西来渲染一些用户界面。在某些时候,用户应该在该JPanel中的某个位置执行Shift-Left单击,然后将内容拖动到(例如)文件资源管理器。
我找到了有关如何添加基于拖动组件的拖放组件的各种教程。使用TransferHandler和Transferable删除,但无法弄清楚,如何在应用程序检测到Shift + Leftclick事件后实际启动Drag& Drop进程。 另外,我是对的,我应该首先在某个临时文件夹中创建导出的文件,然后将路径传递给transferable,然后以某种方式启动拖放过程?
答案 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);
}