如何在关闭 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) 以确保程序终止。