2017-01-22 4 views
1

たとえば、TabPaneが必要ですが、別のクラスにそれぞれタブを入れたいとします。ビルダーとこの仕事をする方法はありますか?TornadoFXでは、どのようにレイアウトを別のクラスに分けてビルダーで使うことができますか?

add(SomeView::class) 

あなたはまたViewを注入し、それを追加することができます:あなたはaddコマンドを使用して別のViewからルートノードを追加する一般的なベースで

tabpane { 
    MyFirstTab() 
    MySecondTab() 
    etc. 
} 

答えて

3

:私はこのような何かをしたい

val someView: SomeView by inject() 

override val root: borderpane { 
    center { 
     add(someView) 
    } 
} 

addは、this += someViewと同じです。ここで起こるのは、フレームワークがビューのrootノードを見つけてそれを親ノードのchildrenプロパティに追加することです。また、BorderPaneなどの特殊容器を知っているので、あなたが内側に何かを追加するとき、それは正しいことないcenterビルダーなど

TabPaneしかし、ノードではないTabインスタンスを取ります。 tabビルダーを使用してタブを追加し、それにコンテンツを割り当てる必要があります。あなたがTab内でaddを実行する場合、Tabのプロパティcontentに割り当てる必要があることを理解するのに十分なことです。したがって、あなたが書くことができます。

tab("My First Tab") { 
    add(MyFirstTab::class) 
} 

またはすでにアサインしたいコンテンツのインスタンスを持っている場合:

tab("My First Tab") { 
    add(myFirstTab) 
} 

MyFirstTabクラスはViewFragmentでなければなりません。

関連する問題