Почему, когда я вызываю представление с объектом индикатора прогресса, событие onDock не запускается в первый раз? - PullRequest
0 голосов
/ 18 января 2019

, когда я вызываю представление, в котором используется индикатор прогресса или индикатор выполнения, событие onDock запускается не в первый раз, а в следующие несколько раз, когда я вызываю окно. Я создал небольшую программу, чтобы проверить это. Я не знаю, правильно ли я вызываю представление, но с остальными элементами управления, которые я использовал, такая ситуация не возникает.

MainView:

package com.example.demo.view

import javafx.geometry.Pos
import tornadofx.*
import javafx.stage.Modality
import javafx.stage.StageStyle

class MainView : View("Hello TornadoFX") {

    override val root = hbox {
        alignment = Pos.CENTER
        button("Show indicator") {
            minWidth = 200.0
            this.paddingAll = 5
            action {
                find(Test::class).openWindow(StageStyle.UTILITY,
                        Modality.APPLICATION_MODAL, true, null, true)
            }
        }
    }
}

Тест:

package com.example.demo.view

import javafx.scene.control.ProgressIndicator
import kotlinx.coroutines.*
import tornadofx.*

class Test : View("My View") {

    private var indicatorProgress: ProgressIndicator by singleAssign()

    override val root = hbox {
        indicatorProgress = progressindicator {
            prefWidth = 100.0
            prefHeight = 100.0
            progress = 0.0
            GlobalScope.launch(Dispatchers.IO) {
                while (true) {
                    for (i in 1..10) {
                        progress = i.toDouble() / 10.0
                        delay(1000)
                    }
                }
            }
        }
    }

    override fun onDock() {
        super.onDock()

        println("Entering view...")
    }

    override fun onUndock() {
        super.onUndock()

        println("Leaving view...")
    }
}

Результат:

12:58:33: Executing task 'run'...

:wrapper

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
:discoverMainScriptsExtensions
:compileKotlin UP-TO-DATE
:compileJava NO-SOURCE
:processResources NO-SOURCE
:classes UP-TO-DATE
:run
Leaving view...
Entering view...
Leaving view...
Entering view...
Leaving view...

BUILD SUCCESSFUL in 18s
3 actionable tasks: 2 executed, 1 up-to-date
12:58:51: Task execution finished 'run'.

После: run должен сначала отображаться «Вход в вид ...», но событие onDock не выполняется.

Я неправильно называю окно?

Большое спасибо всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...