3

私はJavaFXを数か月使用していますが、CSSとグラフについて質問があります。積み上げ棒グラフがあり、使用するシリーズがいくつかあります。たとえば、シリーズA、B、C、D、Eです。グラフを生成すると、一部のグラフなど、すべての系列がグラフに含まれるわけではありません。 A、B、Cがあり、他の人はBとEだけで、他の人は5つすべてを持つことができます。基本的に、私は使用しているデータセットに基づいてシリーズをプログラムで生成しています。

したがって、この場合、シリーズの色を各チャートで同じにする必要があります。これらを生成するとき、BとEしかない場合、これらの色を反映するcssクラス名は次のとおりです。

.default-color0.chart-barおよび.default-color1.chart-bar-ここでは、これらはシリーズの順序の色を設定するだけです-したがって、シリーズ1は "..color0.chart .."定義、シリーズ2"を取得します。 ..color1.chart .. "など。データを処理する前にどちらが最初になるかわからない場合は、コードでこれらを動的に設定する必要があります。

このために私が見つけた唯一の解決策は、積み上げ棒グラフのスタイルシートを、コンパイル前に作成したCSSファイルに設定することです。そして、これはうまく機能します。以下は、コードでこれを行う方法の例です。

myStackedBarChart.getStylesheets().add("/myapp/chartSeriesColors.css");

唯一の問題は、位置1のシリーズが不明であるため、可能なシリーズの各順列のCSSファイルを作成する必要があり、これが悪い解決策であることを知っています。

実行時にシリーズCSSを動的に設定する方法をどこでも調べましたが、これは見つかりませんでした。これを行う方法はありますか。基本的に、次のCSSクラス定義をそのように設定したい:

.default-color0.chart-bar { -fx-bar-fill: #<a color I would set at runtime>; }
.default-color1.chart-bar { -fx-bar-fill: #<a color I would set at runtime>; }

どんな助けでもいただければ幸いです。

4

1 に答える 1

4

チャートがステージに表示された後:

for (Node n: chart.lookupAll(".default-color0.chart-bar")) n.setStyle("-fx-bar-fill: azure;");
于 2012-08-10T07:30:58.090 に答える