首页 > 解决方案 > 在我的第一个场景加载后,如何在我的第二个场景中使用 getUserData()?

问题描述

我的程序有两个场景,firstScene.fxml每个场景secondScene.fxml都有对应的 Controller 类FirstController.javaSecondController.java.

在使用按钮的onAction事件和 FXMLLoader将 StagegetUserData()加载到 FirstController 类之后,我希望能够在我的 SecondController 类上使用 Stage 。

这是我在 SecondController 类上的代码片段:

    @FXML
    public void initialize() throws IOException {
        Stage window = (Stage) statusLabel.getScene().getWindow();
        statusLabel.setText("" + window.getUserData());
    }

getUserData()基于setUserData(message)我的 FirstController 类,其中的值message是一个字符串。

然而,这会输出一个错误:

Caused by: java.lang.NullPointerException: Cannot invoke "javafx.scene.Scene.getWindow()" because the return value of "javafx.scene.control.Label.getScene()" is null

在我的 FirstController 类加载后,我如何getUserData()在 SecondController 类上使用它?

标签: javajavafx

解决方案


您的所有 GUI 代码都应使用通用模型。如果您这样做,则控制器无需相互交谈,因为它们都可以访问通用模型。谷歌或 MVVM 可以找到一些关于任何 GUI 编程的这个重要方面的教程。


推荐阅读