fun main(args: Array<String>) {
HelloWorldApp().launch()
}
fun App.launch() {
JFXPanel()
Platform.runLater({
start(Stage())
})
}
这就是我现在所做的。还有更好的吗?更简洁的方式?
以这种方式在同一个kotlin程序中运行多个不同的TornadoFX应用程序是否安全?我读了一些关于全局变量的内容,所以我想知道是否只允许/推荐一个。
答案 0 :(得分:3)
JVM已经知道如何启动JavaFX应用程序,并且由于你的App类扩展tornadofx.App
再扩展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还通过使用Scopes来支持JPro,它允许多个应用程序实例,但实际上没有多次实际调用Application.launch
。
答案 1 :(得分:0)
你可以这样开始:
fun main(args: Array<String>) {
launch<HelloWorldApp>(args)
}
launch
函数在tornadofx
包中定义为顶级函数,HelloWorldApp
是随机Application
类。