1
fun main(args: Array<String>) {

    HelloWorldApp().launch()
}

fun App.launch() {
    JFXPanel()
    Platform.runLater({
        start(Stage())
    })
}

This is what I do right now. Is there a better? more succinct way?

Is it safe to run multiple different TornadoFX apps from within the same kotlin program this way? I read something somewhere about a global variable so I'm wondering if only 1 is allowed/recommended.

4

2 に答える 2

4

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 ではApplication.launch、JVM の存続期間中に関数を 1 回しか呼び出すことができないため、実際には複数回起動することはできません。ただし、TornadoFX は特別な OSGi サポートを提供し、アプリケーション プロキシ インスタンスを利用して、同じ JVM 内の他の TornadoFX アプリを実際に停止して再起動できるようにします。

TornadoFX はスコープを使用して JPro もサポートします。これにより、複数のアプリケーション インスタンスが可能になりますが、実際にApplication.launch複数回呼び出す必要はありません。

于 2017-08-21T12:27:22.270 に答える