我有一个应用程序,当发生异常时我调用以下代码 - 也就是说,它位于“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();
唯一的问题是即使主阶段(即 public void start(Stage 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 之外编写太多代码。