例如,我想要一个 TabPane,但我希望每个选项卡都在其单独的类中。有没有办法让建造者完成这项工作?我想做这样的事情:
tabpane {
MyFirstTab()
MySecondTab()
etc.
}
View
通常,您可以使用以下add
命令从另一个添加根节点:
add(SomeView::class)
您还可以注入View
并添加它:
val someView: SomeView by inject()
override val root: borderpane {
center {
add(someView)
}
}
add
和做是一样的this += someView
。这里发生的是框架找到root
View 的节点并将其附加到children
父节点的属性中。它还知道特殊容器,例如BorderPane
,因此当您在center
构建器等中添加某些内容时它会做正确的事情
然而TabPane
,需要Tab
实例,这些实例不是节点。您需要使用tab
构建器添加选项卡并为其分配一些内容。构建者很聪明,可以理解,如果你add
在 Tab 内做,它应该分配给content
Tab 的属性。因此你可以写:
tab("My First Tab") {
add(MyFirstTab::class)
}
或者,如果您已经拥有要分配的内容的实例:
tab("My First Tab") {
add(myFirstTab)
}
类MyFirstTab
必须是 aView
或Fragment
。