Kenji Tachibana's Weblog

« 1/8 : 初打ち | メイン | トップスピン »

http://blogs.sun.com/kenji/date/20090112 2009年 1月 12日 月曜日

WidgetFX を使ってみました。

片貝さん から、WidgetFX ってちょっと使ってみてくれない?とお願いされたので、ちょっと使ってみました。なかなか面白そうなツールですね。

Widget FX は、JavaFX ベースのウィジェット (Windows ではガジェットと呼ばれる) を作成するための SDK です。使い方は簡単ですが、ドキュメントがあまりそろっていないような感じなので、この blog を書くのにはちょっと時間がかかってしまいましたね。でも、やり方さえわかってしまえば、JavaFX のアプリケーションを書く感覚で、ウィジェットを作成できるので、とても面白いと思います。



SDK のダウンロードと、ライブラリの設定


1. SDK のダウンロード

widgetfx のページから、SDK をダウンロードして解凍しておきます。SDK の中身は WidgetFX-API.jar と javadoc と LICENSE ファイルだけです。

2. NetBeans で、適当な JavaFX アプリケーションプロジェクトを作成する。

3. Libraries を右クリックして、「Add jar/folder」を選択する

4. #1 の WidgetFX-API.jar を追加する



Widget 作成


とりあえず、定番の Hello World を作成してみます。ウィジットは、Widget クラスで定義されるのですが、この辺りの API doc やチュートリアルの記述が不十分 (見つけられなかっただけかもしれませんが) で、試行錯誤で作成してみました。なので、本当はもうちょっとスマートに作成できるのかもしれません。

Widget クラスでの、表示に関する処理は、 skin で定義されるようです。なので、skin の中で、表示するコンポーネントを scene で定義します。この scene は、Stage クラスの scene とは違い、Node 型で、直接 Swing コンポーネントなどを定義できます。(この辺りの仕様がちょっとよくわかりませんでした。ただ、ソースをみていただけば、なんとなくどうやって作るのかは感じがつかめるかと。


package javafxapplication7;
import javafx.scene.control.Skin;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import org.widgetfx.*;
Widget {
width: 100;
height: 100;
visible: true;
skin: Skin {
scene: Text{
y: 15
content: "Hello World"
fill: Color.GREEN
stroke: Color.RED
font: Font{
name:"Verdana"
}
}
}
}

フォントやカラーは目立つように付け加えただけで、本質的には、Text クラスのインスタンスを作っているだけです。

これを、Web Start 形式 (JNPL) ファイルとしてビルドします。やり方は 片貝さんの blog の参照してみてください。また、同様にアプレットでも実行し、その web アドレスを保存しておいてください。後でウェジットを追加するテストの際に、そのアドレスを使用します。(私の場合は、http://localhost:8082/servlet/org.netbeans.modules.javafx.project.JnlpDownloadServlet/C%3A/Users/tkenji/Documents/NetBeansProjects/JavaFXApplication7/dist//JavaFXApplication7.html でした。)



デスクトップへの貼り付け


最後に作成したウェジットをデスクトップに貼り付けます。まずは、web start 経由で、widgetfx の dock を起動しましょう。 dock の起動 。すると、画面右にウィジット領域が現れます。widgetFX のロゴを右クリックして、「Add Widget...」を選択します。するとダイアログが表示されます。

ここで、先ほど作成した JNLP ファイルを追加するのですが、NetBeans が作成する JNLP のコードベースは、アプレットで実行したときと同じパスになるので、とりあえず、そのパスで追加します。
私の場合は、
http://localhost:8082/servlet/org.netbeans.modules.javafx.project.JnlpDownloadServlet/C%3A/Users/tkenji/Documents/NetBeansProjects/JavaFXApplication7/dist//JavaFXApplication7.jnlp
となります。

これで追加は完了です。ついでに、 Widget FX にあるサンプルもいくつか載せてみました。

それぞれのウィジットをドラッグ & ドロップで、デスクトップの好きな位置に配置することもできます。このときは、ウィジットの透明度を変化させられるスライドバーがつきます。この辺りもちょっと面白いですね。

最後に、お気づきの方もいらっしゃるかもしれませんが、上の方法だと、Hello World のウェジットは、NetBeans が起動している状態でないと、再起動に失敗します。なので、常に作成したウェジットを起動したい場合には、JNLP ファイルのコードベースを変更して、ローカルなりネット上なりで、起動できるように変更しておく必要があります。(NetBeans からコードベースの設定とかもできるといいんですけどね... ちょっと見た感じではなさそうでした。)

これを使えば、既存の JavaFX のアプリケーションも簡単に、ウェジットとしても使うことができそうですね。

投稿されたコメント:

コメント
コメントは無効になっています。

Valid HTML! Valid CSS!

This is a personal weblog, I do not speak for my employer.