我有一个应用程序,当发生异常时我调用以下代码 - 也就是说,它位于"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();
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,即使主要阶段(即public void start(Stage primaryStage)中的参数)被关闭,阶段仍然存在.
我试过了什么?:
通过将它定义为类变量,我在整个类中使对话框可见.然后我实现了以下代码:
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");
}
}
}));
}
Run Code Online (Sandbox Code Playgroud)
当用户试图退出主应用程序时,这个"工作"是关闭的,然而,它实际上并没有按照我的意图行事:当你试图关闭主要阶段时,只关闭了对话台.
这也是一个美学上令人不快的解决方案,因为我不希望全班知道愚蠢的对话框,它只位于一个try/catch中,可能永远不会被使用.
我想知道是否有一个简单的解决方案告诉对话台在初级阶段关闭时以及我不需要在try/catch之外编写很多代码.
Teo*_*ali 11
在主舞台上的OnCloseRequest事件上,执行Platform.exit(docs.oracle.com/javafx/2/api/javafx/application/Platform.html)