2012-08-30 13 views
5

Tengo una aplicación donde llamo al siguiente código cuando ocurre una excepción, es decir, se encuentra dentro de la "captura" de un "try/catch". Simplemente crea una ventana tipo "emergente" que le dice al usuario que ingrese una int en su lugar.¿Cómo cerrar todas las etapas cuando la etapa primaria está cerrada?

Stage dialogStage = new Stage(); 
dialogStage.initModality(Modality.WINDOW_MODAL); 
dialogStage.setScene(new Scene(VBoxBuilder.create(). 
children(new Text("Please enter an integer."), new Button("Ok.")). 
alignment(Pos.CENTER).padding(new Insets(5)).build())); 
dialogStage.show(); 

El único problema es que la etapa persiste incluso si la etapa primaria (que es el parámetro en el public void start (Etapa primaryStage)) está cerrado.

Lo he intentado ?:

me hizo la dialogstage visible en toda la clase al definirlo como una variable de clase. A continuación, he implementado el siguiente código:

primaryStage.setOnCloseRequest((new EventHandler<WindowEvent>(){ 

     @Override 
     public void handle(WindowEvent arg0) { 
          arg0.consume(); 
      try 
      { 
      dialogStage.close(); 

          } 
      catch(Exception ex) 
      { 
       System.out.print(ex.getMessage()+"\r\n"); 
      } 

     } 
    })); 
} 

Este "obras" en que el dialogstage se cierra cuando un usuario intenta salir de la aplicación principal, sin embargo, no hace realmente lo que pretendía: cuando intenta cerrar la etapa primaria solo se cierra el cuadro de diálogo.

También es una solución estéticamente desagradable, ya que no quiero que toda la clase conozca el estúpido cuadro de diálogo que solo se encuentra en un try/catch y que quizás nunca se use.

Me gustaría saber si hay una solución simple que indica al cuadro de diálogo que se cierre cuando la etapa primaria lo hace y donde no tengo que escribir mucho código fuera de mi try/catch.

Respuesta

Cuestiones relacionadas