我如何在第一个场景加载后立即在第二个场景中使用 getUserData()?
How do I use getUserData() on my second scene, right after being loaded by my first scene?
我的程序有两个场景,firstScene.fxml
和secondScene.fxml
,每个场景都有相应的控制器classes FirstController.java
和SecondController.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 编程的这一重要方面的一些教程。
我的程序有两个场景,firstScene.fxml
和secondScene.fxml
,每个场景都有相应的控制器classes FirstController.java
和SecondController.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 编程的这一重要方面的一些教程。