goo blog サービス終了のお知らせ 

javaアプリ推進委員会

javaアプリの作成を推進するページです。

ファイルのドロップが可能なJFrame

2007-10-08 17:23:39 | Java
JFrameでエクスプローラなどからファイルをドロップされたときに、容易にドロップされたファイルを処理することができるようにした抽象クラスです。サブクラスでfileDropを定義することで、ドロップされたファイルを処理することができます。

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

/**
 * ファイルのドロップを可能としたフレームです。
 * サブクラスでfilDropメソッドを定義してください。
 */
public abstract class DnDFrame extends JFrame implements DropTargetListener {
    /**
     * コンストラクタです。
     */
    public DnDFrame() {
        new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE, this, true);
    }
    
    /**
     * ファイルがドロップされた際に呼び出されます。
     * ListからFileでキャストして取り出してください。
     * @param files ファイルのリスト
     */
    public abstract void fileDrop(List files);
    
    /**
     * DropTargetListenerの実装です。
     * @param DropTargetDragEvent
     */
    public void dragEnter(DropTargetDragEvent dtde) {
        if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
            dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
        }
    }
    
    /**
     * DropTargetListenerの実装です。
     * @param DropTargetEvent
     */
    public void dragExit(DropTargetEvent dte) {
    }
    
    /**
     * DropTargetListenerの実装です。
     * @param DropTargetDragEvent
     */
    public void dragOver(DropTargetDragEvent dtde) {
    }
    
    /**
     * DropTargetListenerの実装です。
     * @param DropTargetDropEvent
     */
    public void drop(DropTargetDropEvent dtde) {
        try {
            if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
                dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
                
                fileDrop((List)dtde.getTransferable().getTransferData(DataFlavor.javaFileListFlavor));
                
                dtde.dropComplete(true);
            }
        } catch (Exception e) {
            e.printStackTrace();
            dtde.dropComplete(false);
        }
    }
    /**
     * DropTargetListenerの実装です。
     * @param DropTargetDragEvent
     */
    public void dropActionChanged(DropTargetDragEvent dtde) {
    }
}



最新の画像もっと見る

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。
ブログ作成者から承認されるまでコメントは反映されません。