Swing/FileListFlavor の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/FileListFlavor へ行く。
- Swing/FileListFlavor の差分を削除
--- category: swing folder: FileListFlavor title: Fileのドラッグ&ドロップ tags: [DragAndDrop, JTable, DropTargetListener, TransferHandler] author: aterai pubdate: 2005-06-20T11:06:07+09:00 description: WindowsなどからファイルをJTableにドラッグ&ドロップします。 image: https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTMhxsIIsI/AAAAAAAAAZU/iZ6Pn8yTFFM/s800/FileListFlavor.png --- * 概要 [#summary] `Windows`などからファイルを`JTable`にドラッグ&ドロップします。 #download(https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTMhxsIIsI/AAAAAAAAAZU/iZ6Pn8yTFFM/s800/FileListFlavor.png) * サンプルコード [#sourcecode] #code(link){{ final FileModel model = new FileModel(); final JTable table = new JTable(model); FileModel model = new FileModel(); JTable table = new JTable(model); DropTargetListener dtl = new DropTargetAdapter() { @Override public void dragOver(DropTargetDragEvent dtde) { if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { dtde.acceptDrag(DnDConstants.ACTION_COPY); return; } dtde.rejectDrag(); } @Override public void drop(DropTargetDropEvent dtde) { try { if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { dtde.acceptDrop(DnDConstants.ACTION_COPY); Transferable transferable = dtde.getTransferable(); List list = (List) transferable.getTransferData( DataFlavor.javaFileListFlavor); for (Object o: list) { if (o instanceof File) { File file = (File) o; model.addFileName( new FileName(file.getName(), file.getAbsolutePath())); } } dtde.dropComplete(true); return; } } catch (UnsupportedFlavorException | IOException ex) { ex.printStackTrace(); } dtde.rejectDrop(); } }; new DropTarget(table, DnDConstants.ACTION_COPY, dtl, true); }} * 解説 [#explanation] 上記のサンプルでは、`Windows`のファイルエクスプローラなどからファイルを選択(複数選択可)、ドラッグ、`JTable`上にドロップで、ファイル名などを一覧表示できます。 ドロップされた`DataFlavor`が`DataFlavor.javaFileListFlavor`の場合のみ、これをファイルとして処理する`DropTargetListener`を作成しています。 ---- - `Windows`のファイルエクスプローラなどからファイルを選択(複数選択可)、ドラッグ、`JTable`上にドロップでファイル名などを一覧表示 - ドロップされた`DataFlavor`が`DataFlavor.javaFileListFlavor`の場合のみ、これをファイルとして処理する`DropTargetListener`を作成 - `JDK 1.6.0`以降では以下のような`TransferHandler`が使用可能 -- [[JTableでファイルとディレクトリを別々にソート>Swing/FileDirectoryComparator]]に移動 * 参考リンク [#reference] - [http://www5.big.or.jp/~tera/Labo/Java2/j2dnd.html Java2: WindowsからのDrag and Drop] - [http://www.ne.jp/asahi/j.nihei/personal/linuxDragDrop.html java drag and drop] - [[JTable自体の高さを拡張>Swing/FillsViewportHeight]] * コメント [#comment] #comment #comment