JavaFX - getScene() 返回 null
2022-09-02 13:19:34
我刚刚开始使用JavaFX Scene Builder来构建一个小型应用程序。
它由一个控制器类“Login.java”组成,该类属于“login.fxml”,其中FXML文件“registrierung.fxml”通过一种名为“registrationClicked(ActionEvent event)”的方法加载:
public class Login {
@FXML
private void registrationClicked(ActionEvent event){
try{
((Node) (event.getSource())).getScene().getWindow().hide();
FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/fxml/registrierung.fxml"));
Parent root = (Parent) loader.load();
Stage stage = new Stage();
Scene scene = new Scene(root);
stage.setTitle("Registration");
stage.setScene(scene);
stage.setResizable(false);
stage.show();
} catch(IOException e){
e.printStackTrace();
}
}
现在我想通过根节点 vboxRoot 获取控制器类 'Registrierung.java' 中 'registrierung.fxml' 阶段的引用:
@FXML
private VBox vboxRoot;
Stage stage = (Stage) vboxRoot.getScene().getWindow();
然而,'getScene()'总是导致NullPointerException。两个 FXML 文件的控制器类都在场景生成器中进行调整。
这就是我在'registrierung.fxml'中设置rood节点的方式:
<VBox fx:id="vboxRoot" maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="267.0" prefWidth="355.0" stylesheets="@../css/styles.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="businesslogik.Registrierung">
我做错了什么?