gpt4 book ai didi

java - 如果 JavaFX 发生错误,如何从任何地方调用 setOnCloseRequest 来关闭应用程序?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:02 26 4
gpt4 key购买 nike

在对话框中显示错误后如何关闭我的 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...
}

最佳答案

尽管 setOnHiding() 事件将被处理,但是当检测到应用程序级关闭时,setOnCloseRequest() 将不会被调用 (Platform.exit() 已被调用)。

这没有连接到舞台,所以即使您在 dialog 舞台中添加 setOnCloseRequest(),它也不会被调用。

这些阶段级别的方法(例如 setOnCloseRequestsetOnCloseRequest)不是检测和处理应用程序级别关闭事件的正确方法。相反,您应该实现 stop()从应用程序,检测应用程序关闭,并处理所需的操作。

因此在您的主要应用程序中,

@Override
public void stop() throws Exception {
JDBCUtil.closeConnection();
super.stop();
}

关于java - 如果 JavaFX 发生错误,如何从任何地方调用 setOnCloseRequest 来关闭应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29118078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com