2012-08-30 130 views
5

我有一個應用程序,當發生異常時我會調用下面的代碼 - 也就是說,它位於「try/catch」的「catch」中。它只是創建一個「彈出式」的窗口,告訴用戶輸入一個int。如何關閉初級階段關閉時的所有階段?

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

唯一的問題是,階段不散即使初級階段(即在公共無效啓動(階段primaryStage)的參數)被關閉。

有什麼我試過?:

我做了dialogstage在全班同學可見的它定義爲一個類變量。然後我採取了以下代碼:

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

     } 
    })); 
} 

在這個「作品」,當用戶試圖退出主要應用dialogstage是封閉的,但是,它實際上並沒有做什麼,我想要的結果:當您嘗試關閉主要階段只有對話階段關閉。

這也是一個美學上令人不快的解決方案,因爲我不希望整個班級知道這個愚蠢的對話框,它只位於一個try/catch中,可能永遠不會被使用。

我想知道是否有一個簡單的解決方案,告訴dialogstage在主階段執行時關閉,並且我不需要在try/catch之外編寫大量代碼。

回答

相關問題