前回
でみた Applet を JNLP で起動してみる。
JNLPによるアプレット記述子
次世代の Java Plug-In にて、従来 Java Web Start で使用してきた JNLP がアプレットを起動するためのアプレット記述子として利用できるようになった。
アプレット記述子を JNLP により記述することで、アプレットの機能を大幅に拡張することができるようになる。
appletタグの修正
前回の Ball Applet のタグ内に jnlp_href 要素を記述。
<applet width="300" height="200"> <param name="draggable" value="true"> <param name="jnlp_href" value="ball_applet.jnlp"> </applet>
jnlp
jnlpファイル ball_applet.jnlp を作成。
<?xml version="1.0" encoding="utf-8"?> <jnlp codebase="file:/C:/etc" href="ball_applet.jnlp"> <information> <title>Ball Applet</title> <vendor>etc9</vendor> <offline-allowed/> </information> <resources> <java version="1.5+" href="http://java.sun.com/products/autodl/j2se" /> <jar href="BallApplet.jar" main="true" /> </resources> <applet-desc name="Ball Applet" main-class="etc9.BallApplet" width="300" height="200"> </applet-desc> </jnlp>
ここではWebサーバを使用せずにローカルのファイルで確認を行うため、codebase にはローカルファイルのパスを記述。このパスに ball_applet.jnlp と BallApplet を jar に固めて配置。
動作確認
前回と同様に動作が確認できます。
前回と違う点は、ブラウザからドラッグした段階で、JNLPがローカルにキャッシュされ、ローカルから直接起動できるようになっています。
コマンドプロンプトから
>javaws -viewer
とすると、以下のようにキャッシュされたJNLPが一覧されます。ここから直接実行したり、ショートカットを作成することができます。
Draggable Applet のカスタマイズ
JNLP から Applet を起動すると、Draggable Applet をカスタマイズできます。例えばApplet内に以下の記述を追加することで、Applet のドラッグにAltキーを不要にできます。MouseEvent にてドラッグ可能な領域を制御したりすることもできます。
public boolean isAppletDragStart(MouseEvent e) { return true; }
また、以下のようなメソッドにてドラッグ後に右上に出るクローズボタンを独自に定義することもできるようになります。
public void setAppletCloseListener(ActionListener l)
ショートカットの作成
JNLPに以下のように shortcut 属性を加えると
<?xml version="1.0" encoding="utf-8"?> <jnlp codebase="file:/C:/etc" href="ball_applet.jnlp"> <information> <title>Ball Applet</title> <vendor>etc9</vendor> <offline-allowed/> <shortcut online="false"> <desktop/> <menu submenu="Ball Applet"/> </shortcut> </information> <resources> <java version="1.5+" href="http://java.sun.com/products/autodl/j2se" /> <jar href="BallApplet.jar" main="true" /> </resources> <applet-desc name="Ball Applet" main-class="etc9.BallApplet" width="300" height="200"> </applet-desc> </jnlp>