我如何在第一个场景加载后立即在第二个场景中使用 getUserData()?

How do I use getUserData() on my second scene, right after being loaded by my first scene?

我的程序有两个场景,firstScene.fxmlsecondScene.fxml,每个场景都有相应的控制器classes FirstController.javaSecondController.java

我希望能够在我的 SecondController class 上使用 Stage 的 getUserData(),在使用 onAction Button 事件和 FXMLLoader。

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

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

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

然而这会输出一个错误:

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

我如何在我的 SecondController class 被我的 FirstController class 加载后立即使用 getUserData()

您的所有 GUI 代码都应该使用通用模型。如果你这样做,控制器就不需要相互交谈,因为它们都可以访问公共模型。 Google 通过 MVVM 查找有关任何 GUI 编程的这一重要方面的一些教程。