Kotlin 在TornadoFX中,如何将布局划分为不同的类,然后在builder中使用它们?

Kotlin 在TornadoFX中,如何将布局划分为不同的类,然后在builder中使用它们?,kotlin,tornadofx,Kotlin,Tornadofx,例如,我希望有一个TabPane,但我希望每个选项卡都位于其单独的类中。有没有办法和建筑商合作?我想这样做: tabpane { MyFirstTab() MySecondTab() etc. } 通常,您可以使用add命令从另一个视图添加根节点: add(SomeView::class) 您还可以插入视图并添加它: val someView: SomeView by inject() override val root: borderpane { cent

例如,我希望有一个TabPane,但我希望每个选项卡都位于其单独的类中。有没有办法和建筑商合作?我想这样做:

tabpane {
    MyFirstTab()
    MySecondTab()
    etc.
}

通常,您可以使用
add
命令从另一个
视图添加根节点:

add(SomeView::class)
您还可以插入
视图
并添加它:

val someView: SomeView by inject()

override val root: borderpane {
    center {
        add(someView)
    }
}
add
与执行
this+=someView
相同。这里发生的是框架找到视图的
根节点
并将其附加到父节点的
子节点
属性。它还知道一些特殊的容器,如
边框窗格
,因此当您在
中心
生成器等中添加内容时,它会做正确的事情

但是,
选项卡窗格
会获取非节点的
选项卡
实例。您需要使用
选项卡
生成器添加选项卡,并为其分配一些内容。构建者非常聪明,他们知道如果您在选项卡中添加了
add
,它应该分配给选项卡的
content
属性。因此,你可以写:

tab("My First Tab") {
    add(MyFirstTab::class)
}
或者,如果您已经有了要分配的内容的实例:

tab("My First Tab") {
    add(myFirstTab)
}
MyFirstTab
类必须是
视图
片段