//************************************************************* // Java application // 「DropTest」 // //          作 成 者:ルート高菜    //          作成開始月:2006/6 //          最終更新月:2006/6 [TN085/J75] //************************************************************* import java.awt.*; import java.awt.datatransfer.*; import java.awt.dnd.*; import java.io.*; import java.util.List; import javax.swing.*; public class DropTest extends JFrame implements DropTargetListener { //Eclipseの場合、シリアライズ可能クラスでこれがないと警告が出る private static final long serialVersionUID=0; // public static void main(String[] args) { DropTest frame=new DropTest(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //右上×印で終了 frame.setVisible(true); frame.setLocationRelativeTo(null); //画面の真ん中に表示 } // JLabel label=new JLabel(" ここにドラッグ&ドロップしてください "); //コンストラクタ public DropTest(){ setTitle("DropTest"); //コンテナ枠 Container cp=getContentPane(); cp.add(label); //サイズ調整 pack(); //ドラッグ&ドロップを受け取るように設定 DropTarget target=new DropTarget(this,DnDConstants.ACTION_COPY_OR_MOVE,this,true); setDropTarget(target); } //ドラッグ&ドロップイベント public void dragEnter(DropTargetDragEvent dtde) { dtde.acceptDrag(dtde.getDropAction()); } public void dragOver(DropTargetDragEvent arg0) { } public void dropActionChanged(DropTargetDragEvent arg0) { } public void dragExit(DropTargetEvent arg0) { } public void drop(DropTargetDropEvent dtde) { try{ //Javaのファイルリストであれば Transferable trans=dtde.getTransferable(); if(trans.isDataFlavorSupported(DataFlavor.javaFileListFlavor)){ dtde.acceptDrop(dtde.getDropAction()); List list=(List)trans.getTransferData(DataFlavor.javaFileListFlavor); //リスト内容が1個で、それがフォルダでなくファイルであれば if(list.size()==1){ File file=(File)list.get(0); if(file.isFile()){ //ドラッグ&ドロップされたファイルのパスを表示 label.setText(" "+file.getAbsolutePath()+" "); dtde.getDropTargetContext().dropComplete(true); }else{ label.setText(" フォルダが選択されています "); dtde.getDropTargetContext().dropComplete(false); } }else{ label.setText(" 複数のファイルが選択されています "); dtde.getDropTargetContext().dropComplete(true); } }else{ label.setText(" サポート外のデータ形式です "); dtde.rejectDrop(); } }catch(IOException ioe){ label.setText(" このデータは使用できません "); dtde.rejectDrop(); }catch(UnsupportedFlavorException ufe){ label.setText(" サポート外のデータ形式です "); dtde.rejectDrop(); } //サイズ調整 pack(); } }