ゆるのブログです

基本スプラトゥーン

JavaFXとSceneBuilderを使って2つ目のウィンドウを開くときに詰まった話

前置きの話

こんにちは。

ゆるです。

今回はプログラム書いてて詰まった話をしようと思います。

ぬるぽ出て結構詰まりました。

結局はただの凡ミスだったんですけど一応残しておきます。

追記

他にもエラー出たので直すためにやったことを追記していきます。

こちらgithubにあるテスト用のコードです。
github.com

本題の話

NullPointerException

fxmlファイルにコントローラーを書く
BorderPane xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/19" fx:controller="application.JavaFXTestController"

このように最後にコントローラーの名前を追加する必要がありました。

もしくはSceneBuilderの左下を開いてコントローラーを選択すればよいと思います。

左下にコントローラー
コントローラーの詳細
宣言方法のミス
    void SecondWindow() throws IOException {

 		FXMLLoader loader = new FXMLLoader(getClass().getResource("SecondWindow.fxml"));
 		VBox root = (VBox) loader.load();
 		Scene scene = new Scene(root);
 		Stage stage = new Stage();

 	  //ぬるぽエラー
 	  //SecondWindowController SecondWindow = new SecondWindowController;
 		SecondWindowController SecondWindow = loader.<SecondWindowController>getController();
 		SecondWindow.label.setText("TestLabelSet");
 		
 		stage.setTitle("Second Window");
 		stage.setScene(scene);
 		stage.showAndWait();
 		
 	}

普通にインスタンス生成するときみたいにnewで作っていたのですがそこでエラーが出てました。

多分どこ見てもこんな方法してないと思うのでちゃんと見なきゃなと思いましたね。

RIPTutorial のCreating Custom Dialog *1を参考にさせていただきました。

JavaFXランタイム・コンポーネントが不足しており、このアプリケーションの実行に必要です

実行構成のVM引数に書き足す
--module-path "(C:\javafx-sdk-19\lib)" --add-modules javafx.controls,javafx.fxml
PATHを通す

ユーザー環境変数(U)
Path : C:\javafx-sdk-19\bin

システム環境変数(C)
変数 : CLASSPATH , 値 : C:\javafx-sdk-19\lib\*
変数 : JAVAFX_HOME , 値 : C:\javafx-sdk-19\lib

多分これは治った原因ではないです。

今後eclipseで実行の構成が楽になるだけだと思います。

Launcherクラスを作成

mainメソッドがあるクラスが

javafx.application.Application

を継承していると実行することができないらしいです。

新しくLauncherクラスを作成し、そこで継承すればよいとのこと。

Launcherクラスの中身はこちらです。

package application;

import javafx.application.Application;

public class Launcher {

	public static void main(String[] args) {
		
		Application.launch(Main.class);
	}

}

JavaFXインストーラーを作成する手順 - その他つまづいたところ等*2を参考にさせていただきました。

多分これをして治ったと思います。

あとがきの話

また何か詰まったら解決方法追加していこうと思います。

それでは。

参考にさせていただいたサイト

*1:RIPTutorial - Creating Custom Dialog riptutorial.com

*2:Fire Sign Blog - JavaFXインストーラーを作成する手順 blog.fire-sign.info