JavaFX Class controller Stage/Window reference
java, javafx, javafx-2
Solution
I could not find an elegant solution to the problem. But I found these two alternatives:
Getting the window reference from a Node in the Scene
@FXML private Button closeButton ;
public void handleCloseButton() {
Scene scene = closeButton.getScene();
if (scene != null) {
Window window = scene.getWindow();
if (window != null) {
window.hide();
}
}
}
Passing the Window as an argument to the controller when the FXML is loaded.
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);
...
And FormController must implement the setStage method.
Problem
Is there any way of getting the Stage/Window object of an FXML loaded file from the associated class controller? Particularly, I have a controller for a modal window and I need the Stage to close it.