Fileのドラッグ&ドロップ

編集者:Terai Atsuhiro
作成日:2005-06-20
更新日:2022-03-06 (日) 07:26:05

概要

WidnowsなどからファイルをJTableにドラッグ&ドロップします。

http://terai.xrea.jp/swing/filelistflavor/screenshot.png

サンプルコード

DropTargetListener dtl = new DropTargetAdapter() {
  public void dragOver(DropTargetDragEvent dtde) {
    if(dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
      dtde.acceptDrag(DnDConstants.ACTION_COPY);
      return;
    }
    dtde.rejectDrag();
  }
  public void drop(DropTargetDropEvent dtde) {
    try {
      if(dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
        dtde.acceptDrop(DnDConstants.ACTION_COPY);
        Transferable t = dtde.getTransferable();
        java.util.List list = (java.util.List)t.getTransferData(
                                 DataFlavor.javaFileListFlavor);
        java.util.Iterator i = list.iterator();
        while(i.hasNext()) {
          File file = (File) i.next();
          model.addTest(new Test(file.getName(),
                                 file.getAbsolutePath()));
        }
        dtde.dropComplete(true);
        return;
      }
    }catch(UnsupportedFlavorException ufe) {
      ufe.printStackTrace();
    }catch(IOException ioe) {
      ioe.printStackTrace();
    }
    dtde.rejectDrop();
  }
};
DropTarget dt = new DropTarget(tbl,DnDConstants.ACTION_COPY,dtl,true);

解説

Windowsのエクスプローラなどからファイルを選択し、上記のサンプルアプリ上にドラッグ&ドロップするとファイル名などをJTableに表示しています。

ドロップされたDataFlavorが、DataFlavor.javaFileListFlavorの場合だけ、これをファイルとして処理するDropTargetListenerを作成しています。

参考リンク

コメント