JavaFX应用程序中的清理?

JavaFX应用程序中的清理?,javafx,Javafx,我是JavaFX新手(通常对Java比较生疏),我需要在JavaFX应用程序中执行一些清理任务 我的应用程序显示一个输入表单,该表单将每个表单的数据作为一个单独的行写入DB2数据库。当程序开始时,它首先获得一个数据库连接,在成功之前甚至不需要绘制GUI;如果数据库关闭,则没有必要收集要添加到数据库中的数据。假设已成功获取连接,应用程序将运行整个日班,代码只需整天重复使用原始连接。每次表单完成时,用户都会单击Add按钮,并重复使用相同的语句来创建Insert语句,然后提交Insert。到目前为止还

我是JavaFX新手(通常对Java比较生疏),我需要在JavaFX应用程序中执行一些清理任务

我的应用程序显示一个输入表单,该表单将每个表单的数据作为一个单独的行写入DB2数据库。当程序开始时,它首先获得一个数据库连接,在成功之前甚至不需要绘制GUI;如果数据库关闭,则没有必要收集要添加到数据库中的数据。假设已成功获取连接,应用程序将运行整个日班,代码只需整天重复使用原始连接。每次表单完成时,用户都会单击Add按钮,并重复使用相同的语句来创建Insert语句,然后提交Insert。到目前为止还不错

我的问题涉及何时/如何关闭数据库连接。从逻辑上讲,我认为我希望在用户单击应用程序上的关闭按钮时执行此操作。此时,我将执行我的
disconnectFromDatabase()
方法,让应用程序优雅地关闭

我很难确定何时/如何检测关闭按钮被按下。我曾经使用Swing并使用
setDefaultOnClose
来检测用户是否正在关闭应用程序,但我在JavaFX中没有找到类似的方法

在何处/如何检测到用户按下了关闭按钮?我猜我需要写一个监听器来检测这个动作,但我真的不知道该怎么做

如果必要的话,我可以按原样发布程序,但是如果你能用几句话来描述我需要做什么,我也许可以自己找出我需要的精确代码

更新 谢谢你推荐另一篇文章,但它并没有真正回答我的问题。我正在寻找一种方法来确定GUI上的Close按钮是否被按下,这样我就可以添加自己的清理代码,除了Java所做的标准操作之外,还应该执行这些清理代码。事实证明,Java已经关闭了我的数据库连接,这是其默认行为的一部分,所以我根本不需要编写任何代码。但是,我知道,如果我需要执行Java无法自动完成的清理,那么重写
stop()
方法似乎是一个好方法

更新
我现在已经解决了这个问题。

在您的
应用程序
类中覆盖
桌面
-(让我在安卓系统中思考了一会儿)

 @Override
 public void stop() throws Exception {  
//  clean up goes here   
   //super.stop(); reason for comment this line, @fabian's comment
}

@aribeiro的可能重复项看起来完全是另一个问题。您可以使用以下命令添加侦听器:primaryStage.setOnCloseRequest((事件)->{closeConnection()});在发布问题后,我做了一些进一步的挖掘,了解到我可以重写stop()方法并将自己的清理代码放入其中。我写的代码,但后来我意识到我不需要它。默认情况下,Java已经关闭了数据库连接。(我运行了DB2列表应用程序命令来验证这一点。)我没有意识到Java有那么聪明:-)我已经注释掉了重写的stop()方法和我为关闭连接而编写的方法,但是如果Java的默认行为发生变化,我可以随时取消注释它们。感谢您的及时回复!无需调用
super.stop()
,因为该方法“不做任何事情”(请参阅)。(方法主体为空)。