fun main(args: Array<String>) {
HelloWorldApp().launch()
}
fun App.launch() {
JFXPanel()
Platform.runLater({
start(Stage())
})
}
这就是我现在所做的。有更好的吗?更简洁的方式?
这样可以从同一kotlin程序中运行多个不同的TornadoFX应用程序安全吗?我在全局变量的某处读取了一些内容,所以我想知道是否仅允许/建议使用1。
最佳答案
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
。
关于kotlin - 从(现有的)Kotlin程序启动TornadoFX App,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45796908/