当我尝试访问使用JavaFX传递的控制器时出现空例外

时间:2017-08-03 05:01:33

标签: javafx

我有一个带有倍数Tabs的根布局。从我的主应用程序我打开根布局。我在其中包含了多个带有自己控制器的FXML。 我试图将主控制器传递给其中一个Tabes控制器。

我遇到的问题,一切都按预期工作,但当我尝试点击新标签中的操作按钮时,我收到null个异常。

RootLayout FXML

<fx:indlue fx:id="myNewTabAnchorPane" source="NewTabFXML.fxml"/>

RootLayout控制器

@FXML NewTabController newTabController;

mainTabPane.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Tab>(){
    @override
    public void change(ObservableValue<? extends Tab> observable, Tab oldValue, Tab newValue){
        if(newValue == myTab){
        newTabController.setMyRootController(this);
    }

NewTabController

public void setMyRootController(RootController rootController){
this.rootController = rootController;
System.out.println(rootController.getID); // this prints fine
}

但是,如果我触发此操作,我会从同一个控制器中删除空白

@FXML 
public void createAction(ActionEvent event) throws IOException{
System.out.println(rootController.getID); // with this I get null value. 
}

我错过了什么?

1 个答案:

答案 0 :(得分:1)

问题在于:

 @FXML NewTabController newTabController;

它应该是myNewTabAnchorPaneController,它不是部分小写的类名,而是fx:id + Controller连接。