kotlin - 从(现有的)Kotlin程序启动TornadoFX App

标签 kotlin tornadofx

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/

相关文章:

tornadofx - 我如何将 TornadoFx 与 Kotlin/Native 结合使用

tornadofx - 使用 FXML 时出现 IllegalArgumentException

java - 无法使用 Mockito 2 模拟最终的 Kotlin 类

kotlin - LiveData 转换映射功能

arrays - 尝试在 kotlin 中使用 jooq any 运算符时出现编译错误

kotlin - Kotlin中可配置的JavaScript工厂

tornadofx - 在 TornadoFX 中为 VBox 添加边框样式

Android Gradle Plugin 7 LibraryBuildType 不再具有 isDebuggable 属性

gradle - 打包 tornadofx 应用程序时出现不受支持的 major.minor 版本错误

javafx - 如何防止表格隐藏TornadoFX