相关疑难解决方法(0)

JavaFX - getScene()返回null

我刚开始使用JavaFX Scene Builder来构建一个小应用程序.

它由一个属于'login.fxml'的控制器类'Login.java'组成,其中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();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想通过根节点vboxRoot在控制器类'Registrierung.java'中引用'registrierung.fxml'的阶段:

@FXML
private VBox vboxRoot;

Stage stage = (Stage) vboxRoot.getScene().getWindow();
Run Code Online (Sandbox Code Playgroud)

但是'getScene()'总是会导致NullPointerException.在Scene Builder中调整两个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">
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

java nullpointerexception javafx-8

14
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×1

javafx-8 ×1

nullpointerexception ×1