nai*_*jed 4 java javafx javafx-2
有没有办法从关联的类控制器获取FXML加载文件的Stage/Window对象?
特别是,我有一个模态窗口的控制器,我需要舞台来关闭它.
我无法找到解决问题的优雅方案.但我发现了这两种选择:
从场景中的节点获取窗口引用
@FXML private Button closeButton ;
public void handleCloseButton() {
Scene scene = closeButton.getScene();
if (scene != null) {
Window window = scene.getWindow();
if (window != null) {
window.hide();
}
}
}
Run Code Online (Sandbox Code Playgroud)加载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);
...
Run Code Online (Sandbox Code Playgroud)
而FormController必须实现setStage方法.