TornadoFX (JavaFX) - приложение застревает на «заставке» при сборке - PullRequest
0 голосов
/ 26 августа 2018

Я создал приложение с фреймворком tornadofx для kotlin.Недавно я искал способ реализовать своего рода заставку, которая появляется перед реальным приложением, на случай, если сначала нужно загрузить много файлов.Вот как я это реализовал:

Запуск приложения:

class MyApp: App(LoginView::class) {
override fun start(stage: Stage) {
    super.start(stage)
    find<SplashScreenView>().openModal(stageStyle = StageStyle.UNDECORATED)
}

override fun shouldShowPrimaryStage() = false
}

fun main(args: Array<String>) {
    launch<MyApp>(args)
}

Класс SplashScreen:

class SplashScreenView: View() {

override val root by fxml<AnchorPane>("/fxml/SplashScreen.fxml")

val loadingText by fxid<Label>("loadingText")
val progressbar by fxid<JFXProgressBar>("progressbar")

init {
    currentStage?.apply {
        width = Screen.getPrimary().visualBounds.width / 2
        height = Screen.getPrimary().visualBounds.height / 1.5
    }

    loadingText.text = "Loading Account-Database ..."
}

override fun onDock() {
    super.onDock()
    currentStage?.centerOnScreen()

    close(); primaryStage.show()
}

}

Странно, когда я удаляюProgressbar (JFX или версия по умолчанию не имеет значения) из fxml все работает как положено.Но почему-то индикатор выполнения блокирует остальную часть приложения, когда я собираю его в исполняемый файл JAR.Когда я запускаю его из IDE, даже с индикатором выполнения, заставка закрывается и загружает LoginView.Btw.консоль не показывает никаких ошибок.

Кто-нибудь знает, что здесь происходит, так как я не назначаю никакую задачу на индикатор выполнения?

...