S-JIS[2007-02-02/2009-03-26] 変更履歴

DropTarget(AWT)

DropTargetは、ファイル等をドロップしたときの処理を記述する為のクラス。
(ファイルだけでなく、他コンポーネントからのドラッグによるドロップを受け付ける)

ただし、Swingのコンポーネント(JTree等)でドロップを処理したいなら、TransferHandlerを使う方が良い。[2009-03-26]


import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;

import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDropEvent;
class HteDropTarget extends DropTarget {

	public void drop(DropTargetDropEvent dtde) {
		Transferable t = dtde.getTransferable();
		if (t.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
			dtde.acceptDrop(DnDConstants.ACTION_REFERENCE);
			try {
				List list = (List)t.getTransferData(DataFlavor.javaFileListFlavor);
				for (int i = 0; i < list.size(); i++) {
					File f = (File) list.get(i);
					〜	// fを使ってファイルを処理する
				}
			} catch (Exception e) {
				throw new RuntimeException(e);
			}
		}
	}
}

このクラスのインスタンスを、ドロップを受け付けたいコンポーネントに登録する。

	private void initPane(Container c) {
		JEditorPane editor = new JEditorPane();
〜
		editor.setDropTarget(new HteDropTarget());
〜
		c.add(editor);
	}

これで、JEditorPaneにファイルがドロップされたときにdrop()が呼び出される。


Swing目次へ戻る / Java目次へ戻る
メールの送信先:ひしだま