如何在对话框中显示错误后关闭我的JavaFX应用程序?
主要:
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent we) {
logger.debug("Tool is closing...");
JDBCUtil.closeConnection(); // necessary
}
});
在另一堂课:
// ... creating Dialog, Alert, etc.
Optional<ButtonType> result = exception.showAndWait();
if (result.get().getButtonData() == ButtonData.CANCEL_CLOSE) {
Platform.exit(); // but the handle method isn't called then...
}
答案 0 :(得分:2)
虽然将处理setOnHiding()
事件,但在检测到应用程序级别关闭时(setOnCloseRequest()
已被调用),将不会调用Platform.exit()
。
这与舞台无关,因此即使您在setOnCloseRequest()
阶段添加dialog
,也不会被调用。
这些阶段级方法(例如setOnCloseRequest
,setOnCloseRequest
)不是检测和处理应用程序级别关闭事件的正确方法。相反,您应该从Application实现stop(),以检测应用程序关闭,并处理所需的操作。
所以在您的主要应用程序中,
@Override
public void stop() throws Exception {
JDBCUtil.closeConnection();
super.stop();
}