У меня есть простая программа tornadoFX, которая генерирует несколько кругов в случайных местах на экране.Однако ни один из кругов не нарисован.Я добавил некоторый отладочный код для печати линии, когда нарисована окружность, и она печатается только один раз.
Я ожидаю, что круги будут появляться с интервалами 100 мс, а также когда я нажимаю «Добавить актера»Кнопка.
private const val WINDOW_HEIGHT = 600
private const val WINDOW_WIDTH = 1024
fun main(args: Array<String>) {
Application.launch(MainApp::class.java, *args)
}
class MainApp : App(WorldView::class, Stylesheet::class)
data class Actor(val x: Double, val y: Double)
class WorldView: View("Actor Simulator") {
override val root = VBox()
private val actors = ArrayList<Actor>(0)
init {
tornadofx.runAsync {
(0..100).forEach {
val x = ThreadLocalRandom.current().nextDouble(0.0, WINDOW_WIDTH.toDouble())
val y = ThreadLocalRandom.current().nextDouble(0.0, WINDOW_HEIGHT.toDouble())
actors.add(Actor(x, y))
Thread.sleep(100)
}
}
}
init {
with(root) {
stackpane {
group {
bindChildren(actors.observable()) {
circle {
centerX = it.x
centerY = it.y
radius = 10.0
also {
println("drew circle")
}
}
}
}
button("Add actor") {
action {
actors.add(Actor(0.0, 0.0))
}
}
}
}
}
}
Как ни странно, если я установлю точку останова во время кода рисования круга, круги начнут рисоваться и будет выведена строка отладки.