JavaFX で Applet

Java SE 6u10 で新しい Java Plug-in が採用されました。この Plug-in を使うと、JavaFX のアプリケーションを署名無しで使うことができます。ということで、この Plug-in を使って JavaFX のアプリケーションを実行してみましょう。

JavaFXJava Web Start で起動するというサンプルは結構あるので、Applet を作ってみました。

JavaFX のライブラリには javafx.application.Applet というクラスがありますが、これは使いません ^^;;

その代わりに使うのが javafx.application.Application クラスです。

AppletAPI Doc にも

Note, developers should not normally use this class, but should instead use the environment neutral Application class, since Applets may not be available in all operating environments.

と書いてあります。

Application クラスは Frame クラスと同じような使い方です。

さて、Applet のメインとなるスクリプトには、Application クラスのオブジェクトを返すようにします。

たとえば、こんな感じにします。

import javafx.application.Application;
import javafx.application.Stage;
import javafx.scene.geometry.Circle;
import javafx.scene.paint.Color;

Application {
    stage: Stage {
        content: Circle {
            centerX: 100, centerY: 100
            radius: 40
            fill: Color.RED
        }
    }
}

これをコンパイルして JAR にします。appletsample.jar とでもしましょう。

次は HTML ファイルです。Java SE 6u10 の applet タグは jnlp ファイルを指定できるようになりました。jnlp は param の jnlp_href で指定します。

使用する JAR ファイルなどは jnlp で指定できるので、ここではメインとなるクラス (つまり Applet です) だけを記述しておきます。

  <applet width="200" height="200" 
          codebase="."
          code="javafx.application.Applet">
    <param name="jnlp_href" value="appletsample.jnlp" />
  </applet>

appletsample.jnlp は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
  <jnlp href="appletsample.jnlp">
  <information>
    <title>Applet Sample</title>
    <vendor>Yuichi Sakuraba</vendor>
    <offline-allowed />
  </information>
  <resources>
     <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se" />
     <jar href="appletsample.jar" />
     <jar href="lib/javafxgui.jar" main="true" />
     <jar href="lib/javafxrt.jar" />
  </resources>
  <applet-desc 
      name="Applet Sample"
      main-class="javafx.application.Applet"
      width="200"
      height="200">
    <param name="ApplicationClass" value="appletsample" />
  </applet-desc>
</jnlp>

applet-desc タグが Applet に関する記述です。実際の Application オブジェクトの生成したスクリプトは param の ApplicationClass で指定します。

ちなみに、Applet や Application は javafxgui.jar に含まれています。

ということで、完成した Applet はこちら

http://javainthebox.net/blog/materials/20081031/appletsample.html

ついでに、フラクタルで木を描くという Applet も作ってみました。ソースも公開してあるので、参考にしてください。

http://javainthebox.net/blog/materials/20081031/fractaltree.html

注: アニメーションがむちゃくちゃ多いし、再帰が深いのでかなり遅いです ^ ^;;