【Java】JavaFX Ver.3

こんにちわ、masumasuです。

最近セミの声が聞こえるようになってきましたね。夏本番がすぐそこまで来ている気がします。

さて、前回のブログでは「Hello, JavaFX!」アプリの作成を通して、JavaFXの基本構造とFXML、CSSによるUI構築の概要を書きました。

今回はその続きとして、「FXMLとControllerの連携」について書いてきます。

ボタンを押したときにラベルのテキストが変わったり、動的に値を変更するような処理は、FXML単体ではできません。

そこで登場するのが Controllerクラスです。FXMLと連携させることで、UIに「動き」を持たせることができるます。

Controllerクラスの役割とは?

Controllerクラスとは、FXMLで定義されたUI部品とJavaのコードをつなぐ役割を担うクラスです。

いわば、ボタンやラベルの「中の人」といった感じですね。

例えば、ボタンがクリックされた時に何か処理をしたい場合、FXMLファイル上でそのボタンに識別子(fx:id)を付け、Controllerクラスでそのボタンを扱う変数を定義し、さらにイベント処理メソッドを記述することで連携が可能になります。

fx:id と @FXML アノテーションの使い方

FXML内のUI要素をJava側で扱うには、FXMLファイルで要素にfx:idを指定し、対応するControllerクラスで同じ名前のフィールドを定義し、@FXMLアノテーションを付けます。

<!-- sample.fxml -->
<VBox spacing="10" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" fx:controller="sample.SampleController">
<Label fx:id="label" text="こんにちは!" />
<Button text="クリックしてね" onAction="#handleButtonClick" />
</VBox>
// SampleController.java
package sample;

import javafx.fxml.FXML;
import javafx.scene.control.Label;

public class SampleController {
@FXML
private Label label;

@FXML
private void handleButtonClick() {
label.setText("クリックされました!");
}
}

このように、FXMLで定義したUIパーツをController側で操作できるようになります。

ボタンのonAction="#handleButtonClick"により、クリック時にhandleButtonClickメソッドが呼ばれる仕組みです。

まとめ

今回は、FXMLとControllerの連携について書きました。

ご覧いただきありがとうございました!