Swingからエクスプローラに複数のファイルをドラッグ&ドロップする.
@ITに出てたので、チョット作ってみました。移動とコピーができます。
import java.awt.datatransfer.*; import java.awt.dnd.*; import java.io.File; import java.util.ArrayList; import javax.swing.*; /** * Swingからエクスプローラに複数のファイルをドラッグ&ドロップする. * ドラッグ先のみ対応 */ public class FileDragTest implements Transferable, DragGestureListener { JFrame frame; FileDragTest() { frame = new JFrame(); // ドラッグ元を作成する DragSource dragSource = new DragSource(); DragGestureRecognizer dgr = dragSource.createDefaultDragGestureRecognizer( frame, DnDConstants.ACTION_COPY_OR_MOVE, this); frame.setSize(640, 480); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } /** 引数のデータ型にあったデータを返す. */ public Object getTransferData(DataFlavor flavor) { // ここではデータ型のチェックしてない. ArrayList filelist = new ArrayList(); filelist.add(new File("C:\\Test.txt")); // ここを変えてください return filelist; } /** 転送可能なデータ型を返す. */ public DataFlavor getTransferDataFlavors() { // ここではファイルリストだけ return new DataFlavor {DataFlavor.javaFileListFlavor}; } /** 引数のデータ型をサポートしているかどうか返す. */ public boolean isDataFlavorSupported(DataFlavor flavor) { // ここではファイルリストだけ return flavor.equals(DataFlavor.javaFileListFlavor); } /** ドラッグの操作が行われた. */ public void dragGestureRecognized(DragGestureEvent e) { System.out.println("From.dragGestureRecognized()\n "+e); // Copy/Moveのアクションならドラッグを開始する if((e.getDragAction()|DnDConstants.ACTION_COPY_OR_MOVE)!= 0) { e.startDrag(DragSource.DefaultCopyDrop, this, null); } } public static void main(String[] args) { new FileDragTest(); } }