#navi(../)
*Fileのドラッグ&ドロップ [#f37e5330]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2005-06-20~
更新日:&lastmod;

#contents
**概要 [#kb693f4d]
WidnowsなどからファイルをJTableにドラッグ&ドロップします。

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

**サンプルコード [#t647511e]
 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);

//-[[サンプルを起動>http://terai.xrea.jp/swing/filelistflavor/sample.jnlp]]
-[[jarファイル>http://terai.xrea.jp/swing/filelistflavor/sample.jar]]
-[[ソース>http://terai.xrea.jp/swing/filelistflavor/src.zip]]

**解説 [#p8d48bbf]
上記のサンプルでは、Windowsのエクスプローラなどからファイルをドラッグ&ドロップするとファイル名などをJTableに表示しています。

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

**参考リンク [#tf100a65]
-[[Java2: WindowsからのDrag and Drop>http://www5.big.or.jp/~tera/Labo/Java2/j2dnd.html]]
-[[java drag and drop>http://www.ne.jp/asahi/j.nihei/personal/linuxDragDrop.html]]

**コメント [#i79a7ae9]
#comment