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 回答