I am trying to make it such that I can create a new tab for my TabPane from within another tab but I am having some difficulty. Currently I have the TabPane set up in the "main-window.fxml" with the corresponding MainWindowController. I have a tab within this TabPane which, via fx:include, displays "mainTab.fxml" to the scene graph, controlled by MainTabController. Now from within the "mainTab" I want a button to be able to add an additional tab to the TabPane, but since this is requires a reference to the TabPane in "main-window", I have created a static method in "main-window". When the run the code below I get a NullPointerException on this line in the MainWindowController:
mainTabPane.getTabs().add(new Tab(team.getTeamName()));
Could someone please tell me as to why it is giving this exception and how I can begin to work around it?
main-window.fxml:
<TabPane fx:id="mainTabPane">
    <tabs>
        <Tab fx:id="mainTab" text="Main" closable="false">
            <fx:include source="mainTab.fxml" fx:id="mainWindowTab" alignment="CENTER"/>
        </Tab>                
    </tabs>
</TabPane>
mainTab.fxml (the event handler for the button):
@FXML
public void handleSubmit() {
    String teamName = teamNameTextField.getText();
    Roster roster = rosterComboBox.getValue();
    int startWeek = spinner.getValue();
    Team newTeam = new Team(teamName, startWeek, roster);
    TeamData.addTeam(newTeam);
    MainWindowController controller = new MainWindowController();
    controller.createTeamTab(newTeam);
}
MainWindowController:
public class MainWindowController {
    @FXML
    private TabPane mainTabPane;
    public void createTeamTab(Team team) {
        mainTabPane.getTabs().add(new Tab(team.getTeamName()));
    }
}
 
    