我已经使用 JavaFX 几个月了,并且有一个关于 CSS 和图表的问题。我有一个堆叠条形图,我有几个我使用的系列 - 假设它们是系列 A、B、C、D 和 E。当我生成图表时,并非所有系列都会在图表中,例如一些图表可能有 A、B 和 C,其他人只有 B 和 E,而另一个可能有全部 5 个。基本上,我是根据我正在使用的数据集以编程方式生成系列。
所以在这种情况下,我希望系列的颜色在每个图表上都相同。当我生成这些时,如果我只有 B 和 E,那么反射(reflect)这些颜色的 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>; }
如有任何帮助,我们将不胜感激。
最佳答案
图表在舞台上显示后:
for (Node n: chart.lookupAll(".default-color0.chart-bar")) n.setStyle("-fx-bar-fill: azure;");
关于JavaFX、堆叠条形图和 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11894383/