Tengo mi clase principal la cual carga la venta principal de mi programa y ademas tiene el metodo showAuto para cargar otra vista en la misma ventana a partir de la clase controladora de dicha vista nueva. Esta es la clase Principal.
public class Principal extends Application {
private ArrayList<Stage> listaScene = new ArrayList<>();
private static Principal principal;
public Stage window;
public static Principal getPrincipal() {
if (principal == null) {
principal = new Principal();
}
return principal;
}
public Stage getVentana(){
return window;
}
public void createScene() throws IOException, Exception {
//metodo para cada ventana la controladora
Stage primaryStageAutomatico = ControllerAutoExp.initialicePage();
Principal.getPrincipal().getListScene().add(primaryStageAutomatico);
}
public static void main(String[] args) throws IOException {
Application.launch(Principal.class, (java.lang.String[]) null);
}
@Override
public void start(Stage primaryStage) throws Exception {
System.setProperty("glass.accessible.force", "false");
try {
createScene();
ControllerManejarDatos.initialicePage();
} catch (IOException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
ErrorLogger.recordError(ex);
}
}
public void showAuto(ActionEvent event) {
try {
boolean find = false;
int i = 0;
window=(Stage)((Node)event.getSource()).getScene().getWindow();
while (find == false && i < listaScene.size()) {
if (listaScene.get(i).getTitle().equals("Ventana Auto")) {
if (!listaScene.get(i).isShowing()) {
Stage primaryStageLista = ControllerAutoExp.initialicePage();
listaScene.add(i, primaryStageLista);
listaScene.get(i).initModality(Modality.APPLICATION_MODAL);
listaScene.get(i).show();
} else {
listaScene.get(i).close();
listaScene.get(i).initModality(Modality.APPLICATION_MODAL);
listaScene.get(i).show();
}
find = true;
} else {
i++;
}
}
} catch (Exception e) {
try {
ErrorLogger.recordError(e);
} catch (IOException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Y esta es las clase controladora de la vista nueva que quiero cargar en la misma ventana que resuminendo esta solo ejecuta este metodo.
public static Stage initialicePage() {
try{
Principal principal= new Principal();
Parent root = FXMLLoader.load(Principal.class.getResource("AutoExp.fxml"));
Scene scene = new Scene(root);
primaryStageLista = principal.getVentana();
primaryStageLista.setScene(scene);
primaryStageLista.setTitle("Ventana Auto");
primaryStageLista.addEventFilter(MouseEvent.MOUSE_CLICKED, (MouseEvent event) -> {
Platform.runLater(() -> {
LocationPointData.close();
});
Platform.runLater(() -> {
ChooseAmountTypesToExecute.close();
});
});
} catch (Exception ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
return primaryStageLista;
Mi problema esta programa me devuelve un NullPointerException en el metodo initialicePage en esta linea primaryStageLista.setScene(scene); y a su vez en la clase Principal en createScene(); y ademas en el metodo start(). No logro resolver el problema gracias por la ayuda de antemano.