2017-11-16 20 views
0

JavaFXグラフに二次凡例を追加するにはどうすればよいですか?

val newLegend = MyLegend() 
newLegend.isVertical=true 

val legend = lookupAll(".chart-legend").first() 

でカスタムノード(JavaFXのチャートのための私の場合は、別の伝説)を追加する場合の伝説をカスケード接続(ない驚き)が、少なくとも私はそれをレンダリングすることができることを知っている: enter image description here

legend.getParent().addChildIfPossible(newLegend) 

しかし、これは左上隅のAに間違って追加ノードをレンダリング:だからきちんと私が代わりに親にそれを追加しようとした垂直方向に次々とそれらを整列させるため

いくつかの点 enter image description here

私は間違って何をしていますか?最初の凡例の親コンテナにもっと賢い方法でアクセスできますか?

フル例ソースクラス.chart-legend有するノードはInfactは順番にTilePaneを拡張com.sun.javafx.charts.Legend、あるhere

答えて

1

見出すことができます。 TilePaneのレイアウト制約に対処したくない場合は、その中から子供をクリアして、その中にレイアウトコンテナを追加してください。それはチャートが本当にあなたが伝説を操作するための便利な方法を提供していないことは明らかなので、あなたがのために独自のスキンを作成することを検討でき

with (lookupAll(".chart-legend").first()) { 
    getChildList()?.clear() 
    vbox { 
     label("Line 1") 
     label("Line 2") 
     label("Line 3") 
    } 
} 

:この例では、私はVBoxと3つのラベルを追加しましたより安定したソリューションとしてのチャートそうすれば、凡例の表示場所を正確に制御できます。

+0

ありがとうございました。私は可能な限りSOで受け入れます。なぜなら、それは完全に質問に答えるだけで解決は書かれたkotlinにあり、あなたの偉大なtornadofx APIを使用しています。 –

+0

お手伝いします:) –

関連する問題