Я создал приложение с фреймворком 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.консоль не показывает никаких ошибок.
Кто-нибудь знает, что здесь происходит, так как я не назначаю никакую задачу на индикатор выполнения?