関連するクラス コントローラから FXML ロード ファイルの Stage/Window オブジェクトを取得する方法はありますか?
特に、モーダル ウィンドウ用のコントローラーがあり、それを閉じるにはステージが必要です。
問題に対するエレガントな解決策が見つかりませんでした。しかし、私はこれらの2つの選択肢を見つけました:
シーン内のノードからウィンドウ参照を取得する
@FXML private Button closeButton ;
public void handleCloseButton() {
Scene scene = closeButton.getScene();
if (scene != null) {
Window window = scene.getWindow();
if (window != null) {
window.hide();
}
}
}
FXML のロード時に Window を引数としてコントローラーに渡します。
String resource = "/modalWindow.fxml";
URL location = getClass().getResource(resource);
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(location);
fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory());
Parent root = (Parent) fxmlLoader.load();
controller = (FormController) fxmlLoader.getController();
dialogStage = new Stage();
controller.setStage(dialogStage);
...
また、FormController は setStage メソッドを実装する必要があります。