[解決済み] JavaFX: 初期化中にコントローラからステージを取得する方法は?
2022-02-13 06:46:39
質問
ステージイベント(非表示など)をコントローラクラスから処理したい。だから、私がしなければならないのは、リスナーを追加することです。
((Stage)myPane.getScene().getWindow()).setOn*whatIwant*(...);
の直後に初期化が始まるのが問題です。
Parent root = FXMLLoader.load(getClass().getResource("MyGui.fxml"));
先ずは
Scene scene = new Scene(root);
stage.setScene(scene);
したがって、.getScene()はnullを返します。
私が自分で見つけた唯一の回避策は、リスナーを myPane.sceneProperty() に追加し、それが null でなくなったときにシーンを取得し、それの .windowProperty() に私の ! そして、ステージのイベントに希望するリスナーを設定することですべてが終了します。 リスナーが多すぎるのでは? これは、私の問題を解決する唯一の方法ですか?
解決方法は?
コントローラのインスタンスを
FXMLLoader
で初期化した後
getController()
をインスタンス化する必要があります。
FXMLLoader
その時はスタティックなメソッドを使うのではなく
を呼び出した後にステージを渡すんだ。
load()
の後、直接コントローラに渡す。
FXMLLoader loader = new FXMLLoader(getClass().getResource("MyGui.fxml"));
Parent root = (Parent)loader.load();
MyController controller = (MyController)loader.getController();
controller.setStageAndSetupListeners(stage); // or what you want to do
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン