I am developing JavaFx application in netbeans, in netbeans the project is building and running fine.
I made a build (mvn package) from my project its finished without error but when I launch the program its not loading all the scenes and the FXMLLoader return with null value in this cases.
All .fxml file in the same folder.
public class JavaFXApplication extends Application {
public static final String TOOLBAR_MAIN = "toolbarMain";
public static final String TOOLBAR_MAIN_FXML = "/fxml/ToolbarMain.fxml";
public static final String TOOLBAR_SUB = "toolbarSub";
public static final String TOOLBAR_SUB_FXML = "/fxml/ToolbarSub.fxml";
public static final String NEW_SESSION_PANEL = "newSession";
public static final String NEW_SESSION_PANEL_FXML = "/fxml/NewSessionPanel.fxml";
public static final String OPEN_SESSION_PANEL = "openSession";
public static final String OPEN_SESSION_PANEL_FXML = "/fxml/OpenSessionPanel.fxml";
public static final String CONNECTIONS_PANEL = "connections";
public static final String CONNECTIONS_PANEL_FXML = "/fxml/ConnectionsPanel.fxml";
public static final String LOGS_PANEL = "logs";
public static final String LOGS_PANEL_FXML = "/fxml/LogsPanel.fxml";
public static final String EXCEPTIONS_PANEL = "exceptions";
public static final String EXCEPTIONS_PANEL_FXML = "/fxml/ExceptionsPanel.fxml";
public static final String MESSAGES_PANEL = "messages";
public static final String MESSAGES_PANEL_FXML = "/fxml/MessagesPanel.fxml";
public static ScreensController menuContainer = new ScreensController();
public static ScreensController contentContainer = new ScreensController();
public static ServerService server = new ServerService();
public static Stage STAGE;
@Override
public void start(Stage primaryStage) throws Exception {
STAGE = primaryStage;
primaryStage.setOnCloseRequest((WindowEvent t) -> {
if (server.isRunning()) {
server.cancel();
}
});
menuContainer.loadScreen(JavaFXApplication.TOOLBAR_MAIN,
JavaFXApplication.TOOLBAR_MAIN_FXML);
menuContainer.loadScreen(JavaFXApplication.TOOLBAR_SUB,
JavaFXApplication.TOOLBAR_SUB_FXML);
contentContainer.loadScreen(JavaFXApplication.NEW_SESSION_PANEL,
JavaFXApplication.NEW_SESSION_PANEL_FXML);
contentContainer.loadScreen(JavaFXApplication.OPEN_SESSION_PANEL,
JavaFXApplication.OPEN_SESSION_PANEL_FXML);
contentContainer.loadScreen(JavaFXApplication.NEW_SESSION_PANEL,
JavaFXApplication.NEW_SESSION_PANEL_FXML);
contentContainer.loadScreen(JavaFXApplication.CONNECTIONS_PANEL,
JavaFXApplication.CONNECTIONS_PANEL_FXML);
contentContainer.loadScreen(JavaFXApplication.LOGS_PANEL,
JavaFXApplication.LOGS_PANEL_FXML);
contentContainer.loadScreen(JavaFXApplication.EXCEPTIONS_PANEL,
JavaFXApplication.EXCEPTIONS_PANEL_FXML);
contentContainer.loadScreen(JavaFXApplication.MESSAGES_PANEL,
JavaFXApplication.MESSAGES_PANEL_FXML);
menuContainer.setScreen(JavaFXApplication.TOOLBAR_MAIN);
contentContainer.setScreen(JavaFXApplication.NEW_SESSION_PANEL);
SplitPane root = new SplitPane();
root.getItems().addAll(menuContainer, contentContainer);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
primaryStage.setResizable(false);
primaryStage.setTitle("Exam Supervisor");
}
Screen controller where the screens loaded:
public class ScreensController extends StackPane {
private HashMap<String, Node> screens = new HashMap<>();
public void addScreen(String name, Node screen) {
screens.put(name, screen);
}
public boolean loadScreen(String name, String resource) {
try {
FXMLLoader myLoader = new FXMLLoader(getClass().getResource(resource));
System.out.println("name:" + name + " ,resource" + resource + " ,loader:" + myLoader.getLocation());
Parent loadScreen = myLoader.load();
ControlledScreen myScreenControler
= myLoader.getController();
myScreenControler.setScreenParent(this);
addScreen(name, loadScreen);
return true;
} catch (Exception e) {
System.out.println("name: " + name + ", resource" + resource + " ,exception: " + e.getMessage());
return false;
}
}
public boolean setScreen(final String name) {
if (screens.get(name) != null) {
final DoubleProperty opacity = opacityProperty();
if (!getChildren().isEmpty()) {
getChildren().remove(0);
getChildren().add(0, screens.get(name));
} else {
getChildren().add(screens.get(name));
}
return true;
} else {
System.out.println(screens.get(name) + " ,screen hasn't been loaded!\n");
return false;
}
}
public boolean unloadScreen(String name) {
if (screens.remove(name) == null) {
System.out.println("Screen didn't exist");
return false;
} else {
return true;
}
}
}
My github repo: https://github.com/eszikk/ExamSuperVisorServer