回答編集履歴
2
誤記訂正
test
CHANGED
@@ -128,7 +128,7 @@
|
|
128
128
|
|
129
129
|
|
130
130
|
|
131
|
-
- MyApp行儀のよいシングルトンではない
|
131
|
+
- MyAppは行儀のよいシングルトンではない
|
132
132
|
|
133
133
|
事実上JavaFXのアプリケーションクラスのインスタンスは一つしか生成されることはありませんが、それを保証するような行儀のよさは上記コードにはありません。(JavaFXの仕組み上、コンストラクターをprivateにできないのです)
|
134
134
|
|
1
補足
test
CHANGED
@@ -111,3 +111,33 @@
|
|
111
111
|
}
|
112
112
|
|
113
113
|
```
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
---
|
118
|
+
|
119
|
+
補足:例示コードによくない点もあるので補足します。
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
- Root1/Root2を別のクラスにしている意味
|
124
|
+
|
125
|
+
質問者さんの元のコードでは2つのアプリケーションクラスで2つの画面の遷移をすることを意図していましたが、回答先頭にかいたようにお勧めできないので、ルートノードのクラスをBorderPaneの派生として独立させ、それぞれに画面ごとの制御やレイアウトを記述する考え方を例示してみました。
|
126
|
+
|
127
|
+
Root1,Root2は互いに他の画面の内部詳細にさわらない(見えない)方針とするため、相互の画面遷移部分はアプリケーションクラスのswitchRootメソッドにまかせる方式としています。
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
- MyApp行儀のよいシングルトンではない
|
132
|
+
|
133
|
+
事実上JavaFXのアプリケーションクラスのインスタンスは一つしか生成されることはありませんが、それを保証するような行儀のよさは上記コードにはありません。(JavaFXの仕組み上、コンストラクターをprivateにできないのです)
|
134
|
+
|
135
|
+
しかしインスタンスが一つであるという前提で、staticなフィールド/メソッドを通じてインスタンスがシングルトンであるかのように利用しています。シングルトンを仮定しないコードの方が行儀がよいですが、それは質問者さんご自身で考えてみるとよいと思います。
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
- 画面を切り替えるswitchRootの引数がint
|
140
|
+
|
141
|
+
1とか2といったマジックナンバーを渡しています。行儀のよいプログラムならenumなどにすべきですがそのような行儀のよさは省いています。
|
142
|
+
|
143
|
+
|