JavaFX の画面デザインレイアウトは一度決定してリリースしたらそんなに変更差し替えるものではなかろう。
これによって作った構造は、以下のようになる。
そして、起動画面での fxml 読込みの部分は、(MainAppクラスでは)
String fxmlFile = "/fxml/hello.fxml"; FXMLLoader loader = new FXMLLoader(); Parent rootNode = (Parent)loader.load(getClass().getResourceAsStream(fxmlFile));
と Mavenで生成されてくる。いまいちである。
JavaFX で画面数もそんなに作らないならこれでもいいだろう。でもやはり複数画面になるなら、
Wicket のスタイルのように、画面を構成するクラスと画面を定義するソースを同じ場所に置き、
画面毎のパッケージにしたいものだ。
そこで、以下のように配置換えする。
そして、fxml 読込みも画面のクラスである HelloController から参照して持ってくるように
指定した方が、直感的であるし「画面クラス→画面クラスの fxml 名指定」という命名規則も作りやすい。
FXMLLoader loader = new FXMLLoader(); Parent rootNode = (Parent)loader.load(HelloController.class.getResourceAsStream("hello.fxml"));
コードも見やすいはずだ。