2011/02/07

魔法使いの弟子(その3-1)

【ミッション: ファイルのドラッグ & ドロップをサポートしたい!】

今さらながら、O'reilly の “JAVA SWING HACKS” に載っていた HACK #59 『ファイルをドラッグ & ドロップする』 を試してみた。

これは、アプリ画面上部のアイコンをドラッグ & ドロップすると、テキストエリアに入力した内容でファイルが作られるのだ。

アイコンをドラッグ & ドロップすると、その先に「myfile.txt」が作られる。
ファイルの中身はアプリのテキストエリアと同じ。

本に載っている断片的なソースコードを継ぎ合わせると、だいたい以下のようになる。


このサンプルは、 Java アプリケーションから外部へファイルをドラッグ & ドロップするというものだが、逆に外部からファイルを Java アプリケーションへドロップできたら何かと便利そうである。



例えば、 SD カードから特定の画像だけを『セロテープぺったん画像』に変換したい場合に、ドラッグ & ドロップでアプリにファイルを放り込む事ができたらきっとラクだろう。

というわけで、上記のソースをじゃっかん改造して作ってみた。『アプリから』ドラッグするのと『アプリへ』ドラッグするのとでは、ドラッグまわりの実装方針が異なるが、ファイルのやりとりの抽象化に関しては一緒である。

あと、 GUI 構築に関するコードを中心に、ぼくのスタイルに(勝手に)書き換えている。

作ったのは右下のふざけたアプリ。
テキストエリアにファイルをドラッグ & ドロップすると、フルパスが表示される。
ドロップされた時点でファイル群はリスト List に格納されているので、あとは for ループで一つずつ取り出して処理を行えばよい。

一応ソースコードを晒しておく。


たったこれだけで、ドラッグ & ドロップによるファイルのインポートがサポートできた。

うれしい。