ついにベールを脱いだJavaFX

第1回 JavaFXの概要と基本

この記事を読むのに必要な時間:およそ 7 分

静的型付け

多くのスクリプト言語が動的な型付けを行うのに対し,JavaFX Scriptでは静的な型付けを採用しています。AdobeのActionScriptもバージョンを重ねるごとに静的な型付けの側面が強化されているので,ユーザインターフェースを構築するには静的型付けの方が適しているのかもしれません。

JavaFX Scriptでは変数をvarキーワードで定義します。

リスト6

var number: Integer;

このように,変数名の後にコロンを書き,その次に型名を書きます。しかし,型が明らかな場合,型の定義を省略することができます。

リスト7

var number = 10;

10はIntegerであるため,numberがIntegerであることは明らかです。このような場合,型定義を省略できます。

バインド

MVC(Model - View - Controller)構造を採用したGUIアプリケーションでは,モデル部が持つ情報をビューが表示します。

通常,モデルとビューの情報を同期させるにはデザインパターンのオブザーバパターンやイベントなどが使用されます。つまり,モデルの情報が更新したら,それをイベントとしてビューに通知します。Javaの場合,モデルとしてJava Beansを使用したとしましょう。Beanが保持している情報が更新した場合,PropertyChangeEventを発生させ,ビューに値の更新を通知します。

一方,JavaFX Scriptではモデルの情報とビューで表示される情報が自動的に同期されます。これをバインドといいます。Java SE 7で採用される予定のBeans Bindingと同等の機能を言語レベルで使用することができるわけです。バインドを表すにはbindキーワードを使用します。

リスト8

var x = 10;
var y = bind x;
 
println("Y: {y}");
 
x = 20;
 
println("Y: {y}");

bindを使用できるのは変数もしくはアトリビュートの初期化時だけです。初期化時に,式の右辺にbindを書き,続いて同期させたい変数もしくはアトリビュートを書きます。上記の例では変数xを変数yにバインドしています。ここで使用しているprintlnは,標準出力に出力を行うための関数です。printlnはJavaのSystem.out.printlnメソッドに相当します。

文字列の中の並括弧は,並括弧の中に埋めこまれた変数もしくは式が展開されることを意味しています。これを実行すると次のようになります。

図3

Y: 10
Y: 20

xの値ははじめは10だったのが,途中で20に更新しています。すると,xにバインドされたyも自動的に20になります。

単にバインドするだけでなく,式にすることも可能です。

リスト9

var x = 10;
var y = bind x * 2;
 
println("Y: {y}");
 
x = 20;
 
println("Y: {y}");

この例では,yはxを2倍にした値に自動的に更新されます。実行してみると次のようになります。

図4

Y: 20
Y: 40

著者プロフィール

櫻庭祐一(さくらばゆういち)

横河電機に勤務するかたわらJava in the Boxにて新しい技術を追い続けています。JavaOneは今年で11年目。名実共にJavaOneフリークと化しています。