所以,我有一个案例,我需要有 N 行的形式:Label TextView/Checkbox
。也许我需要的不仅仅是这两个视图,所以我希望能够支持 TornadoFx 的任何东西View
。
我创建了一个接口,它有一个返回 TornadoFx 的方法,View
它看起来像这样:
interface ValueContainer {
fun getView() : View
}
其中一种实现如下所示:
class BooleanValueContainer(val checked: Boolean) : ValueContainer {
val valueProperty = SimpleBooleanProperty(checked)
override fun getView(): View {
return (object : View() {
override val root = checkbox {
bind(valueProperty)
}
})
}
}
现在,当我尝试在init
块内使用它时,它不会显示在布局中。root
isGridPane
并且parameters
是具有名称和对ValueContainer
实现的引用的对象列表(BooleanValueContainer
或我未显示的其他对象):
init {
with(root) {
parameters.map {
row(it.name) {
it.parameterContainer.getView()
}
}
}
}
我被困在这里很长一段时间了,我尝试了我能找到的任何东西,但除了放置textview
或checkbox
阻塞而不是getView()
调用之外,没有任何效果,但是我必须对我应该在这个类中显示什么视图有逻辑,它代表一个视图,我不希望那样。