从(现有的)Kotlin程序启动TornadoFX应用程序

fun main(args: Array<String>) { HelloWorldApp().launch() } fun App.launch() { JFXPanel() Platform.runLater({ start(Stage()) }) } 

这就是我现在所做的。 有没有更好的? 更简洁的方式?

以同样的方式在同一个kotlin程序中运行多个不同的TornadoFX应用程序是否安全? 我读了一些关于全局变量的地方,所以我想知道是否只允许/推荐1。

JVM已经知道如何启动JavaFX应用程序,并且由于您的App类tornadofx.Appjavafx.application.Application ,它再次扩展了javafx.application.Application ,所以您可以简单地将您的JVM指向该主类,它将运行得很好。 如果你想显式启动你的TornadoFX应用程序,JavaFX提供了一个你应该使用的静态launch方法。

启动JavaFX或TornadoFX应用程序的典型主要功能是:

 fun main(args: Array<String>) { Application.launch(HelloWorldApp::class.java, *args) } 

JavaFX只允许在JVM生命周期中调用一次Application.launch函数,所以无论如何你都不能真正启动多个函数。 但是,TornadoFX提供了特殊的OSGi支持,允许您通过利用应用程序代理实例实际停止并重新启动同一JVM中的其他TornadoFX应用程序。

TornadoFX也支持JPro通过使用Scopes,它允许多个应用程序实例,但没有实际调用Application.launch几次。