「Java/swing/サンプル/エクスプローラからファイルをドロップ」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
#ref(swingエクスプローラからファイルをドロップ.png)
エクスプローラからドロップされたファイルを受け取るサンプルです。
GUIアプリを作っていると、エクスプローラからファイルをドロップしたいと思うことも多いと思うので、
ドロップされたファイルの名前を、標準出力に出力するだけのサンプルを作成しました。
*** ソース &ref(DropTest0.java)
#highlight(java){{
import java.awt.HeadlessException;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetAdapter;
import java.awt.dnd.DropTargetDropEvent;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.swing.JFrame;
public class DropTest0 extends JFrame {
MyDropTargetListener dtl = new MyDropTargetListener();
public DropTest0() throws HeadlessException {
setTitle("Swingエクスプローラからファイルをドロップ");
new DropTarget(this, DnDConstants.ACTION_COPY,
new MyDropTargetListener());
setBounds(200, 100, 300, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new DropTest0();
}
class MyDropTargetListener extends DropTargetAdapter {
@Override
public void drop(DropTargetDropEvent dtde) {
dtde.acceptDrop(DnDConstants.ACTION_COPY);
boolean b = false;
try {
if (dtde.getTransferable().isDataFlavorSupported(
DataFlavor.javaFileListFlavor)) {
b = true;
List<File> list = (List<File>) dtde.getTransferable()
.getTransferData(DataFlavor.javaFileListFlavor);
for (File file : list) {
System.out.println(file.getPath());
}
}
} catch (UnsupportedFlavorException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
dtde.dropComplete(b);
}
}
}
}
}}
#ref(swingエクスプローラからファイルをドロップ.png)
エクスプローラからドロップされたファイルを受け取るサンプルです。
GUIアプリを作っていると、エクスプローラからファイルをドロップしたいと思うことも多いと思うので、
ドロップされたファイルの名前を、標準出力に出力するだけのサンプルを作成しました。
※[[こちら>Java/swing/サンプル/ドロップを受け取るサンプル(文字列、ファイル)]]もあるのですが、よりシンプルにドロップされたファイルを受け取るだけのサンプルに修正しました。
*** ソース &ref(DropTest0.java)
#highlight(java){{
import java.awt.HeadlessException;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetAdapter;
import java.awt.dnd.DropTargetDropEvent;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.swing.JFrame;
public class DropTest0 extends JFrame {
MyDropTargetListener dtl = new MyDropTargetListener();
public DropTest0() throws HeadlessException {
setTitle("Swingエクスプローラからファイルをドロップ");
new DropTarget(this, DnDConstants.ACTION_COPY,
new MyDropTargetListener());
setBounds(200, 100, 300, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new DropTest0();
}
class MyDropTargetListener extends DropTargetAdapter {
@Override
public void drop(DropTargetDropEvent dtde) {
dtde.acceptDrop(DnDConstants.ACTION_COPY);
boolean b = false;
try {
if (dtde.getTransferable().isDataFlavorSupported(
DataFlavor.javaFileListFlavor)) {
b = true;
List<File> list = (List<File>) dtde.getTransferable()
.getTransferData(DataFlavor.javaFileListFlavor);
for (File file : list) {
System.out.println(file.getPath());
}
}
} catch (UnsupportedFlavorException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
dtde.dropComplete(b);
}
}
}
}
}}