如何动态添加一个按钮到视图?



我是Kotlin和TorandoFX的新手。也许我在《tornado ofx》中漏掉了一些非常基本的东西。我想在视图中创建一个列表(应该是可变的)按钮。如果用户单击添加按钮,列表应该得到一个新项目,这应该导致视图中出现一个新按钮。谢谢你的帮助。

我想它应该是这样的:

import tornadofx.*
fun main(args: Array<String>) {
launch<MyApp>(args)
}
class MyApp: App(MainView::class)
class MainView: View("MainView") {
val values = ArrayList<Int>(listOf(1,2,3)).asObservable()
var count = 4
override val root = vbox {
values.forEach { x ->
button(x.toString())
}
button("add") {
action {
values.add(count)
println(values.toString())
count++
}
}
}
}

这段代码产生了这个视图,但是如果我单击按钮,视图不会刷新。这段代码产生了这个视图,但是如果我单击按钮,视图不会刷新。我想我错过了一些关于绑定的东西。

我们发现,我在绑定部分是正确的。我只需要使用bindChildren()函数,并给函数一个observableArray和一个函数来转换数组元素作为参数。谢谢你的帮助。

import javafx.collections.FXCollections
import tornadofx.*
fun main(args: Array<String>) {
launch<MyApp>(args)
}
class MyApp: App(MainView::class)
class MainView: View("MainView") {
val values = FXCollections.observableArrayList<Int>(listOf(1,2,3))
var count = 4
override val root = vbox {
vbox {
bindChildren(values) { x ->
button(x.toString())
}
}
vbox() {
button("add") {
action {
values.add(count)
count++
}
}
}
}
}

相关内容

最新更新