在FXML中使用Controller时出现NullPointerException

时间:2016-11-28 17:01:30

标签: java fxml

我试图了解JavaFX并遇到控制器的NullPointerException。意思是每当我使用控制器的实例时,eclipse会显示异常。我已经阅读了几个类似的问题但是没有解决我的问题。

以下是导致异常的代码段

public GuiController (Stage a) throws IOException  {
    this.priStage = a;
    FXMLLoader fxLoader = new FXMLLoader(getClass().getClassLoader().getResource("View/OverviewWindow.fxml"));  
    overviewController = fxLoader.getController();
    overviewController.getRefreshButton().setText("Oh no"); **// When i remove this line everything works fine!**
    Parent root = fxLoader.load();
    priStage.setScene(new Scene(root));
    priStage.show();
}

这是我的Controller类,基本上没什么:

public class OverviewWindow implements Initializable {
    @FXML TextField searchTextField;

    @FXML
    private Button standardButton;

    @FXML
    private Button refreshButton;

    @FXML
    private RadioButton mitArchivRadioButton;

    @FXML
    private RadioButton nurArchivButton;

    @Override
    public void initialize(URL a, ResourceBundle b) {

    }
    public OverviewWindow() {

    }

}

我的堆栈跟踪

at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at Controller.GuiController.<init>(GuiController.java:31)
at Controller.Controller.init(Controller.java:33)
at main.start(main.java:24)

有人能帮助我吗?我读了几天这个问题,并尝试多次设置控制器,但无法做到这一点。谢谢。

1 个答案:

答案 0 :(得分:0)

首先你必须在写完这段代码后加载fxml ..

overviewController = fxLoader.getController();
overviewController.getRefreshButton().setText("Oh no");