JavaFX_betaとJavaFX正式リリース版比較


ワンマン的覚書(JavaFX_beta on Eclipse)

JavaFX_beta vs JavaFX

JavaFX above 1.0のソースをJavaFX_beta版で動くようにする。

そのために、JavaFX_beta版の視点からできないことを列挙し、対応策を書いた。

JavaFX_beta版では、

javafx.stage.Stageやjavafx.scene.*などがインポートできない

[対応]
javafx.ui.*やjavafx.ui.Canvas.*などをインポートする。

[メモ] ライブラリの構造がまったく違う。

Stageが使えない。

[対応]
Frameを使う。

[メモ] beta版では、Frameがメインウィンドウの役割

def(定数宣言)ができない

[対応]
var(変数宣言)に書き直す


var(変数宣言)の最後には、必ずセミコロン(;)が要る

[対応]
セミコロンをつける。

[メモ] 以下のような場合も。

	var image = Image {
	...
	};

varで、functionを宣言できない。

[対応]
functionで定義する。

[例]

	function bar() {
	...
	return 0;
	}

function以外に、operationなるものがある。

[対応]
代入操作を要する関数はoperationを用いて書き直す。

[メモ] 用途の住み分けは以下のとおり

	operationは、戻り値を返さない。
	functionは、戻り値を返す。

クラスの中の変数(メンバ変数)をvarで宣言できない。

[対応]
varではなくattributeで宣言する。

メンバ変数に初期値を設定できない。

[対応]
とりあえず、インスタンスで個別に設定する

もしくは、

triggerによる更新処理で、初期値を設定する。


operationのなかで、グローバル宣言した変数をいじれない。

グローバル宣言したつもりの変数といった方が正確だろうか。
[対応]
操作したい変数をクラスの中に取り込む。

[例]

	class Foo {
	   attribute a: Integer;
	
	   operation add( k:Integer );
	}
	var foo = Foo {
	    a: 0
	};
	operation Foo.add( k: Integer ) {
	    a = a + k;
	}       

onMouseXXX系のイベントドリブンな関数をoverrideできない。

正確に言えば、関数ではなくオペレーターとなっている、というところだろう。
[対応]
onMouseXXXに自分で書いたオペレーションを割り当てる。

[例]

	onMousePressed: operation( e: CanvasMouseEvent ) {
	...
	}

[メモ] onMouseXXX系の関数は、クラスの中でoperationとして宣言されている。

ブロック構文が使えない。

[対応]
仕方ないので、普通の構文で分けて書く

mod(余剰)演算子が使えない。

[対応]
%演算子を使う。

[メモ] その他にも使えない演算子がいくつかある。 特に、配列(正式リリース版では、シーケンス)操作は、似ているが違いも結構ある。