ドロップされたファイル名を取得する方法(JDK1.4.1)

・ソース

import java.awt.datatransfer.*;
import java.awt.dnd.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;

/**
 * ドロップされたファイル名を取得するサンプル
 */
public class DropTest{
    public static void main(String[] args){
        DropTestFrame frame = new DropTestFrame();
        frame.show();
    }
}

/**
 * ドロップを受け付けるフレーム
 */
class DropTestFrame extends JFrame{
    /**
     * コンストラクタ
     */
    public DropTestFrame(){
        // フレーム
        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        });
        setTitle("DropTest");
        setSize(300, 200);
        // このフレームがドロップを受け付けるようにする
        DropTarget dt = new DropTarget(this, new DropTargetAdapter(){
            public void drop(DropTargetDropEvent dtde){
                dropIn(dtde);
            }
        });
    }

    /**
     * ドロップされたときの処理
     * @param dtde DropTargetDropEvent
     */
    private void dropIn(DropTargetDropEvent dtde){
        // ドロップアクションを取得してCOPYとMOVEの場合はドロップを受け入れる
        int action = dtde.getDropAction();
        switch(action){
            case DnDConstants.ACTION_COPY:
                dtde.acceptDrop(DnDConstants.ACTION_COPY);
                break;
            case DnDConstants.ACTION_MOVE:
                dtde.acceptDrop(DnDConstants.ACTION_MOVE);
                break;
            default:
                dtde.dropComplete(false);
                return;
        }
        // ドロップされたものの取り出し
        try{
            Transferable contents = dtde.getTransferable();
            if(contents.isDataFlavorSupported(DataFlavor.javaFileListFlavor)){
                List list = (List)contents.getTransferData(DataFlavor.javaFileListFlavor);
                for(int i = 0 ; i < list.size() ; i++){
                    File file = (File)list.get(i);
                    System.out.println(file.getPath() + " がドロップされました。");
                }
            }else{
                System.out.println("ファイルをドロップしてください。");
                dtde.dropComplete(false);
                return;
            }
            dtde.dropComplete(true);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}