JavaFX でHello World(基本構造)
JavaFX でHello World(基本構造)
JavaFX を試してみる機会があったので、 基本構造を メモ。
環境
JavaFX とは
Java8 でも標準に使えるGUIライブラリ。 AWT/Swing とは別物。
AWT/Swing からJavaFX への切り替えが推奨されている(JavaFXに関してよくある質問)ので、 これから勉強する際はJavaFXでよさげ。
Awt/Swingとは違うので、基本は import javafx.~~
のように読み込んで使用する。
基本構造
以下のコードが基本構造である。実行すると何もしないアプリケーションが立ち上がる。
メインクラスは、JavaFXアプリケーションの拡張元となる Applicationクラスを継承する。
main
メソッドで、Applicationクラスの lanch
メソッドが呼ばれる。 このlanch
メソッドでJavaFX アプリケーションが立ち上がる。
lanchメソッドが呼ばれると start
メソッドが呼ばれる。 処理をstart
メソッドに記述し、実装する必要がある。
import javafx.application.Application;
import javafx.stage.Stage;
public class JavaFXApplication extends Application {
@Override
public void start(Stage primaryStage) {
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Stage
「Stage」は、「トップレベルコンテナ」と呼ばれるもの。 GUI組み込みの土台となるコンテナ。 このStageを使ってウインドウを構築するのが基本。 アプリケーション1つにStage1つを持つことになる。Stage がウィンドウそのものと捉えていい。
show
メソッドで、 ウィンドウが表示され、Stageに追加したコンポーネント(Node)が描画される。
Scene
実際には、Stage に直接パーツを追加するのでなく、「Scene」を追加する。 「Scene」は、Stage に組み込まれる見えないコンテナ。 ウインドウ(Stage) の中に表示される内容を構築するのがScene。 Scene に組み込まれたものをStage に、はめ込んで表示する。
以下のように、Scene の部分でウィンドウのサイズ(width, height) が決まる。また、背景色の指定もできる。
Scene primaryScene = new Scene([Pane], width, height);
primaryStage.add(primaryScene);
Pane
「Pane」が、実際にボタンなどのコンポーネント(Node)を組み込む土台となるコンテナになる。 Scene には、Pane を1つ組み込めるようになっている。 Paneは、いくつかの種類があり、 Pane内にどのようにコンポーネントを組み込む(配置する)かそのレイアウト方式の違いがある。
例えば、「BoderPane」では、 setTop
, setRight
, setLeft
, setBottom
, setCenter
で5つの場所に配置可能。 また、「HBox」では、コンポーネントを水平に配置可能になる。
Pane は入れ子にすることもでき、 HBoxで水平に配置したものをBorderPane の上部にsetTop
で配置することもできる。 入れ子が多すぎるとわかりづらいので、fxml を使って、配置・レイアウトするのが望ましいと思われる。
Hello World
以下は、 NetBeans のJavaFXプロジェクトを立ち上げ時の テンプレート(Hello World) のコードである。
StackPane にボタンを追加し、そのPane をScene に追加し、 そのScene をpraimaryStage に追加している。
ボタン(Button) をクリックすると、 標準出力で"Hello World" が出力される。
JavaFX でHelloWorld (NetBeans のテンプレート)
参考リンク