Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关闭TornadoFX窗口时如何关闭整个应用程序?_Java_Kotlin_Tornadofx - Fatal编程技术网

Java 关闭TornadoFX窗口时如何关闭整个应用程序?

Java 关闭TornadoFX窗口时如何关闭整个应用程序?,java,kotlin,tornadofx,Java,Kotlin,Tornadofx,当TornadoFX窗口关闭时,如何关闭整个应用程序 对于JavaFX,通常是: val app = JFrame() app.defaultCloseOperation = JFrame.EXIT_ON_CLOSE 是否有方法检测TornadoFX视图是否已关闭?通常,关闭主阶段会激活应用程序类的stop()功能。这是您要覆盖以执行自己的关闭例程的内容: class MyApp : App (FirstView::class) { override fun stop() {

当TornadoFX窗口关闭时,如何关闭整个应用程序

对于JavaFX,通常是:

val app = JFrame()
app.defaultCloseOperation = JFrame.EXIT_ON_CLOSE

是否有方法检测TornadoFX视图是否已关闭?

通常,关闭主阶段会激活应用程序类的
stop()
功能。这是您要覆盖以执行自己的关闭例程的内容:

class MyApp : App (FirstView::class) {
    override fun stop() {
        super.stop()
        /* Do your shutdown routine here  */
    }
}
然而,我也遇到过这样的情况,即逻辑被破坏,只有关闭所有程序窗口才能工作。如果您有一个“主窗口”要确保关闭程序,请将其添加到应用程序类中:

override fun start(stage: Stage) {
   stage.setOnHiding { stop() }
}

编辑:我将使用您的IDE查看
stop()
函数到底为您做了什么,同时查看由Abra链接的答案,以了解vanilla JavaFX
Platform.exit()函数的功能,因为TornadFX只是JavaFX的核心,这是JavaFX应用程序最明确的关闭。该线程中的一些用户报告他们的程序仍将挂起,这取决于他们正在做什么,并建议添加
System.exit(0)
,也就是Kotlin中的exitProcess(0)
,到他们的关机例行程序,以确保程序死机。

@Abra这是为TornadoFX应用程序设计的。“对于JavaFX,它通常是:
val app=JFrame()app.defaultCloseOperation=JFrame.EXIT_ON_CLOSE
”除了Swing,而不是JavaFX。另外,请注意,TornadFX的核心只是JavaFX之上的一个Kotlin框架。“通常,关闭主阶段会激活App类的stop()函数。[…]然而,我有过这样的例子,即逻辑被破坏,只有关闭所有程序窗口才能工作”。这不是违反逻辑的。如文件所述,如果配置为隐式退出,则关闭过程仅在最后一个窗口关闭时启动,而不一定在主阶段关闭时启动。如果要显式停止JavaFX运行时,则需要调用。
应用程序#stop()
方法只是在适当的时间调用的生命周期方法;它不会激活生命周期的这一部分,可能永远不应该手动调用。@Slaw这似乎不正确。我制作了一些程序,这些程序只在主阶段窗口关闭时调用TornadFX
App.stop()
函数,即使其他窗口打开时没有所有者。然后出现了一些问题,可能是JavaFX本身存在错误,因为这不是文档中记录的情况。就我个人而言,我从未遇到过这个问题。@Slaw我认为你把JavaFX的
应用程序#stop()
和TornadFX的
应用程序#stop()
搞混了。