I have a file named Home.fxml which is a BorderPane
. This component has buttons on the left and an empty TabPane called mainTabPane
in the centre. I would like, when a user clicks on any button on the left, to add a tab to mainTabPane
. I am able to add one tab when one button is clicked. But when I try to do the same for the second button, I get this error:
java.lang.IllegalStateException: Location not set
Here is the code for HomeController.java, where all is done:
public void initialize(URL loc, Resource Rse) {
createReportsTab();
loadCreateItemTab();
}
/*this is the one which works well*/
@FXML
void CreateReportTab() {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(ReportsController.class.getResource("gui/Reports.fxml"));
Parent parent = loader.load();
Tab reportsTab = new Tab("Reporting Engine");
reportsTab.setClosable(true);
reportsTab.setcontent(parent);
mainTabPane.getTabs().add(reportsTab),
}
/*this is the one which produces the error*/
@FXML
void loadCreateItemTab() {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(AddNewItemController.class.getResource("gui/addNewItem.fxml"));
Parent parent = loader.load();
Tab newItemTab= new Tab("New Item");
newItemTab.setClosable(true);
newItemTab.setcontent(parent);
mainTabPane.getTabs().add(newItemTab),
}
I am confused; why the Reporting Engine loads well but the second one is producing that error above?
Here is my project structure in IntelliJ IDEA:
All controller classes are in the controllers package and all FXML files are in the GUI package. The main class is in Companion package.