调用HSQLDB jar中DatabaseManagerSwing类的main方法后如何获取窗口关闭事件?
Posted
技术标签:
【中文标题】调用HSQLDB jar中DatabaseManagerSwing类的main方法后如何获取窗口关闭事件?【英文标题】:How to get the window closed event after I invoke the main method of DatabaseManagerSwing class in HSQLDB jar? 【发布时间】:2019-12-23 11:16:44 【问题描述】:我在我的 java 应用程序的内存数据库中使用 HSQL。我通过调用DatabaseManagerSwing
类的main 方法打开HSQLDB 提供的GUI manager
。已成功打开。
我需要注册一个回调或当用户手动关闭窗口时通知。我在文档中找不到类似的东西,在看到 DatabaseManagerSwing
类的代码后,我认为它不受支持。
stop
方法只是清除它的变量并且不调用任何其他方法。正如我在想如果它支持这个,它必须将回调对象存储在某个地方,最后在 stop 方法中调用它们。但不幸的是,什么都没有。
有什么办法或解决方法来完成这项工作吗?当用户关闭窗口时,我需要执行一些操作。
【问题讨论】:
见this answer(它实现了SecurityManager
)。
其实swing代码就是库。我无法控制它。也许,这不是摇摆问题,而是与图书馆本身有关的问题。至于,hsqldb API中是否有一些东西可以使它成为可能。我想我是对的,但如果有可能,请详细说明,因为我无法理解。
【参考方案1】:
我添加了一个shutdownhook,以便在程序终止时运行。但事实并非如此。确保在启动 HSQL 数据库管理器时,不要传递 --noexit 参数。通过不传递参数,JVM 将在您关闭数据库管理器窗口时退出。
通过添加这个
Runtime.getRuntime().addShutdownHook(new Thread(() ->
// do your stuff
)
);
当用户手动关闭窗口时,您可以做您想做的事情。
【讨论】:
以上是关于调用HSQLDB jar中DatabaseManagerSwing类的main方法后如何获取窗口关闭事件?的主要内容,如果未能解决你的问题,请参考以下文章