首页 > 解决方案 > JavaFX- NullPointerException 从其父节点中删除节点时

问题描述

我正在使用 Scenebuilder 和 JavaFX 8。

我有一个ComboBoxVBox我试图ComboBox从一个简单的条件开始VBox时删除。Application这是我的尝试:

主.java

public class Main extends Application {

    @Override
    public void start(Stage window) throws IOException {
        int QueryValue = 1;
        if (QueryValue == 1) {
            FXMLLoader loader=new FXMLLoader();

    Parent root = loader.load(getClass().getResource("/com/pos/view/login.fxml"));
    LoginController lc= (LoginController)loader.getController();
            lc.setInvisible();
            Scene scene = new Scene(root);
            window.setScene(scene);
            window.show();
        }
    }
    // ...
}

控制器类:LoginController.java

@FXML
private ComboBox<?> organization_combo;
@FXML
private  VBox vbox;
public  void setInvisible() {
    vbox.getChildren().remove(organization_combo);
}

我在 FXML 中添加了我的控制器类,并为VBox和提供了 fx:id ComboBox。问题是每当我打电话时setInvisible() ,我都会得到NullPointerException. 但是当我不调用该setInvisible()方法时,我的 fxml 加载良好。谁能帮我?

注意:我已经关注JavaFX - How to delete a specific Node from an AnchorPane并且我的问题与标记的不匹配。

这是错误消息。

Caused by: java.lang.RuntimeException: Exception in Application start method
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
    at com.pos.view.LoginController.setInvisible(LoginController.java:45)
    at com.pos.main.Main.start(Main.java:26)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(Unknown Source)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(Unknown Source)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(Unknown Source)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
    at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(Unknown Source)

标签: javajavafx-8scenebuilder

解决方案


推荐阅读