0

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.

Ruslan López
  • 10,060
  • 11
  • 35
  • 68
apr_dev
  • 11
  • 3

0 Answers0