本格派エンジニアの工具箱

第37回 NetBeansとJavaFX Scene Builderで作るJava GUIアプリケーション その2

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

JavaプログラムからのFXMLの利用

続いてJavaプログラムの方を確認してみましょう。まず,main()メソッドを持つJavaFXSample.javaは次のようになっています。

package javafxsample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class JavaFXSample extends Application {
  @Override
  public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
    
    Scene scene = new Scene(root);
    
    stage.setScene(scene);
    stage.show();
  }

  public static void main(String[] args) {
    launch(args);
  }
}

JavaFXアプリケーションはApplicationクラスを継承して作成します。この仕組みはアプレットをAppletクラスを継承して作るのに似ています。アプリケーションはlaunch()メソッドで起動し,init()メソッドで初期化された上で,start()メソッドが実行されます。

FXMLを使う場合には,FXMLLoaderクラスを利用してFXMLファイルを読み込んだ上で,取得したParentオブジェクトを元にしてSceneオブジェクトを作成し,それをsetScene()メソッドを用いてStageオブジェクトに設定するという手順になります。最後にStageのshow()メソッドを呼び出せばウィンドウが表示されます。

次にコントローラのコードですが,SampleController.javaの中身は次のようになっています。

package javafxapplication5;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;

public class SampleController implements Initializable {  
  @FXML
  private Label label;
  
  @FXML
  private void handleButtonAction(ActionEvent event) {
    System.out.println("You clicked me!");
    label.setText("Hello World!");
  }
  
  @Override
  public void initialize(URL url, ResourceBundle rb) {
    // TODO
  }  
}

この例からも分かるように,FXMLファイルの記述との関連付けは@FXMLアノテーションを使って行います。このとき,プロパティ名はfx:id属性の値と同じものを使用します。Sample.fxmlではLabel要素のfx:id属性に"label"を指定してあるので,SampleControllerのLabelの変数名が"label"になるわけです。同様に,イベントハンドラとなるメソッドの名前も,BUttonのonAction属性(EventsパネルのOn Actionプロパティで設定)に指定した"handleButtonAction"となります。

このアプリケーションを実行すると,最初に図6のようにボタンが表示され,ボタンをクリックすると図7のようにラベルにテキストが追加されることが確認できます。

図6 ボタンをクリック

図6 ボタンをクリック

図7 ラベルにテキストが表示される

図7 ラベルにテキストが表示される

著者プロフィール

杉山貴章(すぎやまたかあき)

ONGS Inc.所属のプログラマ兼テクニカルライター。雑誌,書籍,Webメディアで多数の著作をもつ。

著書