今週から2週間にわたって,次世代Java Plug-inの実験的機能であるドラッガブルアプレットについて紹介します。

ドラッガブルアプレットとは何であるのかは,実際に試してみるのが一番です。

サンプルのソース (こちらからダウンロードできます)
DraggableClock.java
draggableclock.jnlp
draggableclock.html

このdraggableclock.htmlをブラウザで表示させると,時計のアプレットが起動します(図1)。ここまでは特に普通のアプレットと何も変わりません。

図1●DraggableClockの実行結果
図1●DraggableClockの実行結果

では,アプレット領域内でAltキーを押しながら左マウスボタンをクリックし,ドラッグしてみてください。すると,アプレットがドラッグに応じて,移動します(図2)。

つまり,ドラッガブルアプレットというのは,その名の通りドラッグできるアプレットのことなのです。

図2●アプレットをドラッグする
図2●アプレットをドラッグする

今までアプレットは,常にHTMLドキュメントに埋めこまれ,実行するにはブラウザが必要でした。ところが,ドラッガブルアプレットはブラウザから独立して動作することができるのです。

Java SE 6u10の新機能その8で説明したように,アプレットを実行するJava VMがブラウザから独立したプロセスになりました。この恩恵により,ドラッガブルアプレットが可能になりました。

アプレットをドラッグすると,Java Plug-inにおけるアプレットのコンテナから削除されます。そして,修飾のない(タイトルバーなどがない)フレームが作成され,アプレットはそこに貼られます。

この時,アプレットがjava.applet.Appletクラスのサブクラスの場合,java.awt.Frameクラスが使用されます。

アプレットがjavax.swing.JAppletクラスのサブクラスの場合,javax.swing.JFrameクラスが使用されます。

ブラウザから切り離されたアプレットをよく見ると,右上に小さい×印が表示されています(図3)。この×印をクリックするとアプレットが終了するように感じますが,実際はドラッグ前の状態に戻ります。つまり,再びHTMLドキュメントに埋めこまれた状態に戻ります。

図3●独立して動作するアプレット
図3●独立して動作するアプレット