在TornadoFX中,我怎样才能将布局分成不同的类,然后在构建器中使用呢?
例如,我想要一个TabPane,但我希望在其单独的类中有每个选项卡。 有没有办法使这个建设者的工作? 我想要做这样的事情:
tabpane { MyFirstTab() MySecondTab() etc. }
一般来说,您可以使用add
命令从另一个View
添加根节点:
add(SomeView::class)
你也可以注入一个View
并添加它:
val someView: SomeView by inject() override val root: borderpane { center { add(someView) } }
add
就像做this += someView
。 这里发生的是框架找到视图的root
并将其附加到父节点的children
属性。 它也知道像BorderPane
这样的特殊容器,所以当你在center
构建器中添加一些东西时,它是正确的。
TabPane
然而,采取Tab
实例,这不是节点。 您需要使用tab
构建器添加选项tab
并为其分配一些内容。 建设者是聪明的足够了解,如果你add
一个标签,它应该分配给该标签的content
属性。 所以你可以写:
tab("My First Tab") { add(MyFirstTab::class) }
或者,如果您已经有了要分配的内容实例:
tab("My First Tab") { add(myFirstTab) }
MyFirstTab
类必须是一个View
或Fragment
。