teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記2

2017/10/17 10:38

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -1,4 +1,4 @@
1
- 追記:
1
+ 追記1
2
2
  ご質問の内容とコードが不一致になっている(FXML上がGood Moringになっている)ことに気づけなかったため指摘しそこねました。改めて指摘します。
3
3
 
4
4
  - FXML上にコントローラークラスの指定が抜けている
@@ -7,7 +7,26 @@
7
7
  - FXMLの場所がおかしい
8
8
  上記の指摘を直していて気付きましたがコントローラークラスを指定しても実行時にクラスを見つけられません。原因はFXMLの置き場所の問題だと思います。FXMLファイルのURLを`getClass().getResource(...)`で求めていますので、少なくともsrcフォルダー以下に配置するのが妥当と思います。それより上の階層に置くと、例えばjarにパッケージングした際にjarのトップ階層より上の階層を指定することになり不合理だと思います。
9
9
 
10
+ 追記2:
11
+ 上の記述だけでは少々わかりにくいかも知れないので具体的な修正方法を述べます。
10
12
 
13
+ (A) フォルダー階層を変更
14
+ たとえば以下のようにしてください。
15
+ ```
16
+ src
17
+ +-- sample3
18
+ +- Sample3.java
19
+ +-- fxml
20
+ +- sample3.fxml
21
+ ```
22
+ load時のコードも`load(getClass().getResource("../fxml/sample3.fxml"));`に変更するのをお忘れなく。(IDEによっては自動修正されますがEclipse Marsでは修正されなかったと思いますので念のため)
23
+
24
+ (B) FXMLの変更
25
+ シーンビルダーを起動し、左側のアコーディオンのControllerの項目(一番下にあります)を開き、"Controller class"に"sample3.Sample3"と入力しSaveしてください。Scene Builderのバグのため、この修正をしただけだとSaveされないかも知れません。その場合はさらにどれかのNodeのプロパティーを変更した後にSaveしてみてください)。
26
+ FXMLファイル内のVBoxの属性として以下が追加されていればOKです。
27
+ `fx:controller="sample3.Sample3"`
28
+
29
+
11
30
  以下元の回答
12
31
  ---
13
32
  上記コードで実行してみましたが、一応Good Morningと初期表示されます。

1

追記

2017/10/17 10:38

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -1,9 +1,21 @@
1
+ 追記:
2
+ ご質問の内容とコードが不一致になっている(FXML上がGood Moringになっている)ことに気づけなかったため指摘しそこねました。改めて指摘します。
3
+
4
+ - FXML上にコントローラークラスの指定が抜けている
5
+ コントローラークラスの指定がないため、コントローラインスタンスが生成されることもなく、initializeメソッドも当然呼び出されません。画面上にはシーンビルダーで設定した状態そのまましか表示されてなかったわけです。
6
+
7
+ - FXMLの場所がおかしい
8
+ 上記の指摘を直していて気付きましたがコントローラークラスを指定しても実行時にクラスを見つけられません。原因はFXMLの置き場所の問題だと思います。FXMLファイルのURLを`getClass().getResource(...)`で求めていますので、少なくともsrcフォルダー以下に配置するのが妥当と思います。それより上の階層に置くと、例えばjarにパッケージングした際にjarのトップ階層より上の階層を指定することになり不合理だと思います。
9
+
10
+
11
+ 以下元の回答
12
+ ---
1
13
  上記コードで実行してみましたが、一応Good Morningと初期表示されます。
2
14
  提示しているコードは最新でしょうか?よくお確かめください。
3
15
 
4
16
 
5
17
  ---
6
- 本件の問題とは関係ありませんが、コメントを少し
18
+ 本件の問題とは直接関係ありませんが、コメントを少し
7
19
 
8
20
  ・アプリケーションクラスとコントローラークラスは別のクラスに
9
21