skrbさんのJavaFX で Hello, World!を参考に、JavaFX2の簡単なサンプルを書いてみた。
クライアントGUIアプリケーションを作る場合、Applicationクラスを継承し、start()メソッドをオーバーライドする。
そして、main()からstaticメソッドのlaunch()を呼んでいる。
すなわち、launch()からstart()が呼ばれる。
(launch()にクラスを渡さなかった場合、launch()を呼び出したクラスが指定されたものとして扱われる)
import javafx.application.Application; import javafx.stage.Stage;
public class Sample extends Application {
	public static void main(String[] args) {
		launch(args);
//		launch(Sample.class, args);
	}
	@Override
	public void start(Stage stage) throws Exception {
		〜
	}
}
※jfxrt.jarをビルドパス(クラスパス)に追加しておく必要がある。
ウィンドウ(フレーム)を出し、文字列を表示する例。
| 普通版 | Builder版 | 
|---|---|
| import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.layout.Pane; | import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.LabelBuilder; import javafx.scene.layout.Pane; import javafx.scene.layout.PaneBuilder; | 
| @Override
public void start(Stage stage) throws Exception {
	stage.setTitle("sample title"); | |
| Pane root = new Pane(); | Pane root = PaneBuilder.create() .build(); | 
| Scene scene = new Scene(root, 256, 212); //ウィンドウサイズ | |
| Label label = new Label("Hello, World!"); | Label label = LabelBuilder.create()
	.text("Hello, World!")
	.build(); | 
| root.getChildren().add(label); stage.setScene(scene); stage.show(); } | |
JavaFX2では、Label等のコントロール(シーン)のクラスを直接使う方法の他に、Builderを使う方法がある。
Builderを使うと、メソッドチェーンのような形でプロパティーを指定できる。
Builderを使う場合は、Builder.create()でビルダーのインスタンスを生成し、最後にbuild()でシーンを作る。
↓ラベルの左上の座標を(16, 32)の位置にする例。
| 普通版 | Builder版 | 
|---|---|
| import javafx.geometry.Pos; | |
| Label label = new Label();
label.setText("Hello, World!");
label.setLayoutX(16);
label.setLayoutY(32);
label.setAlignment(Pos.TOP_LEFT); | Label label = LabelBuilder.create()
	.text("Hello, World!")
	.layoutX(16)
	.layoutY(32)
	.alignment(Pos.TOP_LEFT)
	.build(); | 
※layoutX・layoutYで座標を指定する場合、貼り付ける先がPaneクラスである必要がある。(StackPaneとかだと指定した座標は無視される)
JavaFX2では、シーンにスタイル(HTMLのCSSがベース)を適用することが出来る。
これを使って背景色やラベルのフォントサイズ・文字色を変える例。
| 普通版 | Builder版 | 
|---|---|
| import javafx.scene.layout.Pane; | import javafx.scene.layout.Pane; import javafx.scene.layout.PaneBuilder; | 
| Pane root = new Pane();
root.setStyle("-fx-background-color: blue"); | Pane root = PaneBuilder.create()
	.style("-fx-background-color: blue")
	.build(); | 
| Label label = new Label();
label.setText("Hello, World!");
label.setLayoutX(16);
label.setLayoutY(32);
label.setAlignment(Pos.TOP_LEFT);
label.setStyle("-fx-font-size: 24; -fx-text-fill: white"); | Label label = LabelBuilder.create()
	.text("Hello, World!")
	.layoutX(16)
	.layoutY(32)
	.alignment(Pos.TOP_LEFT)
	.style("-fx-font-size: 24; -fx-text-fill: white")
	.build(); | 
JavaFX2用のスタイルは、接頭辞として「-fx」が付いている。
HTMLのCSSと全く同じではないので、JavaFX2のスタイルの仕様を確認する必要がある。
(しかもコントロール(シーン)毎に使えるスタイルが異なるので、個別に確認しなければならない)