Fileのドラッグ&ドロップ
Total: 28296, Today: 1, Yesterday: 2
Posted by aterai at
Last-modified:
Summary
WindowsなどからファイルをJTableにドラッグ&ドロップします。
Screenshot

Advertisement
Source Code Examples
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);
View in GitHub: Java, KotlinDescription
Windowsのファイルエクスプローラなどからファイルを選択(複数選択可)、ドラッグ、JTable上にドロップでファイル名などを一覧表示- ドロップされた
DataFlavorがDataFlavor.javaFileListFlavorの場合のみ、これをファイルとして処理するDropTargetListenerを作成 JDK 1.6.0以降では以下のようなTransferHandlerが使用可能