2012-08-30 91 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之外编写大量代码。

回答

相关问题