如何在关闭 TornadoFX window 时关闭整个应用程序?
How to close entire app when a TornadoFX window is closed?
如何在 TornadoFX window 关闭时关闭整个应用程序?
JavaFX 通常是:
val app = JFrame()
app.defaultCloseOperation = JFrame.EXIT_ON_CLOSE
有没有办法检测 TornadoFX 视图是否关闭?
通常,关闭初级阶段会激活应用class的stop()
功能。这是您要覆盖以执行自己的关机例程的内容:
class MyApp : App (FirstView::class) {
override fun stop() {
super.stop()
/* Do your shutdown routine here */
}
}
但是,我遇到过这种逻辑被破坏并且只有关闭所有程序 windows 才有效的情况。如果您有 'main window' 并希望确保关闭该程序,请在您的应用程序 class 中也添加:
override fun start(stage: Stage) {
stage.setOnHiding { stop() }
}
编辑:我会使用您的 IDE 查看 stop()
函数究竟为您做了什么,以及查看 Abra 链接的答案以了解 vanilla JavaFX Platform.exit()
函数的作用是因为 TornadoFX 的核心只是 JavaFX,这是最明确的 JavaFX 应用程序关闭。该线程中的一些用户报告说他们的程序仍然会挂起,这取决于他们在做什么,并建议在他们的关闭例程中添加 System.exit(0);
,也就是 Kotlin 中的 exitProcess(0)
以确保程序终止。
如何在 TornadoFX window 关闭时关闭整个应用程序?
JavaFX 通常是:
val app = JFrame()
app.defaultCloseOperation = JFrame.EXIT_ON_CLOSE
有没有办法检测 TornadoFX 视图是否关闭?
通常,关闭初级阶段会激活应用class的stop()
功能。这是您要覆盖以执行自己的关机例程的内容:
class MyApp : App (FirstView::class) {
override fun stop() {
super.stop()
/* Do your shutdown routine here */
}
}
但是,我遇到过这种逻辑被破坏并且只有关闭所有程序 windows 才有效的情况。如果您有 'main window' 并希望确保关闭该程序,请在您的应用程序 class 中也添加:
override fun start(stage: Stage) {
stage.setOnHiding { stop() }
}
编辑:我会使用您的 IDE 查看 stop()
函数究竟为您做了什么,以及查看 Abra 链接的答案以了解 vanilla JavaFX Platform.exit()
函数的作用是因为 TornadoFX 的核心只是 JavaFX,这是最明确的 JavaFX 应用程序关闭。该线程中的一些用户报告说他们的程序仍然会挂起,这取决于他们在做什么,并建议在他们的关闭例程中添加 System.exit(0);
,也就是 Kotlin 中的 exitProcess(0)
以确保程序终止。