JavaFX,Stacked Bar Charts和CSS

时间:2012-08-10 01:43:52

标签: java css charts javafx-2

我已经使用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>; }

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:4)

在舞台上显示图表后:

for (Node n: chart.lookupAll(".default-color0.chart-bar")) n.setStyle("-fx-bar-fill: azure;");