2012-08-30 11 views
5

Mam aplikacji, w której wywołuję następujący kod, gdy wystąpi wyjątek - to znaczy, że znajduje się w "catch" "try/catch". Tworzy jedynie okno podobne do "popup", które mówi użytkownikowi o wpisaniu int.Jak zamknąć wszystkie etapy, gdy główny etap jest zamknięty?

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(); 

Jedynym problemem jest to, że etap zwleka nawet jeśli podstawowy etap (który jest parametrem w public void start (Stage primaryStage)) jest zamknięty.

Co mają Próbowałem ?:

Zrobiłem dialogstage widoczne w całej klasy, definiując go jako zmienną klasy. Potem realizowany następujący kod:

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"); 
      } 

     } 
    })); 
} 

This „działa”, że dialogstage jest zamknięty, gdy użytkownik próbuje wyjść z głównego aplikacji, jednak w rzeczywistości nie robić to, co zamierzałem: podczas próby zamknięcia główny etap tylko okno dialogowe jest zamknięte.

Jest to również rozwiązanie nieprzyjemne pod względem estetycznym, ponieważ nie chcę, aby cała klasa wiedziała o tym głupim oknie dialogowym, które znajduje się tylko w jednym try/catch i nigdy nie będzie używane.

Chciałbym wiedzieć, czy istnieje proste rozwiązanie, które nakazuje zamknąć okno dialogowe podczas podstawowego etapu i gdzie nie muszę pisać dużo kodu poza próbą/catch.

Odpowiedz

Powiązane problemy