gpt4 book ai didi

JavaFX 类 Controller 舞台/窗口引用

转载 作者:搜寻专家 更新时间:2023-11-01 01:54:46 34 4
gpt4 key购买 nike

有没有办法从关联的类 Controller 中获取 FXML 加载文件的 Stage/Window 对象?

特别是,我有一个模态窗口 Controller ,我需要舞台来关闭它。

最佳答案

我找不到解决问题的优雅方法。但我发现了这两种选择:

  • 从场景中的节点获取窗口引用

    @FXML private Button closeButton ;

    public void handleCloseButton() {
    Scene scene = closeButton.getScene();
    if (scene != null) {
    Window window = scene.getWindow();
    if (window != null) {
    window.hide();
    }
    }
    }
  • 加载 FXML 时将窗口作为参数传递给 Controller ​​。

    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 方法。

关于JavaFX 类 Controller 舞台/窗口引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13015537/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com