从(现有的)Kotlin 程序启动 TornadoFX 应用程序
Launching a TornadoFX App from (an existing) Kotlin program
fun main(args: Array<String>) {
HelloWorldApp().launch()
}
fun App.launch() {
JFXPanel()
Platform.runLater({
start(Stage())
})
}
这就是我现在所做的。有更好的吗?更简洁的方式?
以这种方式从同一个 kotlin 程序中 运行 多个不同的 TornadoFX 应用程序安全吗?我在某个地方读到一些关于全局变量的东西所以我想知道是否只有 1 是 allowed/recommended.
JVM 已经知道如何启动 JavaFX 应用程序,并且由于您的应用程序 class 扩展了 tornadofx.App
又扩展了 javafx.application.Application
,您只需将 JVM 指向主 class 它会 运行 就好了。如果您想显式启动 TornadoFX 应用程序,JavaFX 提供了您应该使用的静态 launch
方法。
启动 JavaFX 或 TornadoFX 应用程序的典型主要功能是:
fun main(args: Array<String>) {
Application.launch(HelloWorldApp::class.java, *args)
}
JavaFX 只允许 Application.launch
函数在 JVM 的生命周期中被调用一次,因此无论如何您都不能真正启动多个。但是,TornadoFX 提供了特殊的 OSGi 支持,允许您使用应用程序代理实例实际停止和重新启动同一 JVM 中的其他 TornadoFX 应用程序。
TornadoFX 还通过使用 Scopes 支持 JPro,它允许多个应用程序实例,但实际上没有多次调用 Application.launch
。
你可以这样开始:
fun main(args: Array<String>) {
launch<HelloWorldApp>(args)
}
launch
函数在tornadofx
包中定义为顶层函数,HelloWorldApp
是随机Application
class.
fun main(args: Array<String>) {
HelloWorldApp().launch()
}
fun App.launch() {
JFXPanel()
Platform.runLater({
start(Stage())
})
}
这就是我现在所做的。有更好的吗?更简洁的方式?
以这种方式从同一个 kotlin 程序中 运行 多个不同的 TornadoFX 应用程序安全吗?我在某个地方读到一些关于全局变量的东西所以我想知道是否只有 1 是 allowed/recommended.
JVM 已经知道如何启动 JavaFX 应用程序,并且由于您的应用程序 class 扩展了 tornadofx.App
又扩展了 javafx.application.Application
,您只需将 JVM 指向主 class 它会 运行 就好了。如果您想显式启动 TornadoFX 应用程序,JavaFX 提供了您应该使用的静态 launch
方法。
启动 JavaFX 或 TornadoFX 应用程序的典型主要功能是:
fun main(args: Array<String>) {
Application.launch(HelloWorldApp::class.java, *args)
}
JavaFX 只允许 Application.launch
函数在 JVM 的生命周期中被调用一次,因此无论如何您都不能真正启动多个。但是,TornadoFX 提供了特殊的 OSGi 支持,允许您使用应用程序代理实例实际停止和重新启动同一 JVM 中的其他 TornadoFX 应用程序。
TornadoFX 还通过使用 Scopes 支持 JPro,它允许多个应用程序实例,但实际上没有多次调用 Application.launch
。
你可以这样开始:
fun main(args: Array<String>) {
launch<HelloWorldApp>(args)
}
launch
函数在tornadofx
包中定义为顶层函数,HelloWorldApp
是随机Application
class.