当前位置: 首页 > 知识库问答 >
问题:

JavaFx条形图图例颜色

东门茂实
2023-03-14

我知道我可以使用以下代码设置图例项目的设置颜色:

for(Node n:chart.lookupAll(".bar-legend-symbol.default-coly0")){n.setStyle("-fx-backed-Color:""" ";"); }

但只有当我第一次将数据添加到图表中,然后将图表添加到场景中时,它才有效。像这样:

final XYChart.Series<String, Number> series = new XYChart.Series<String, Number>();
XYChart.Data<String, Number>bar = new XYChart.Data<String, Number>("test", 120);
series.getData().add(bar);

chart.getData().add(series);

chartFxPanel.setScene(new Scene(chart));

for (Node n : chart.lookupAll(".bar-legend-symbol.default-color0")) {
    n.setStyle("-fx-background-color: " + "red"+ ";");
   }

但是我想在图表添加到场景后将数据添加到图表中。如果我这样做,它不会改变图例项目的颜色:

final XYChart.Series<String, Number> series = new XYChart.Series<String, Number>();
XYChart.Data<String, Number>bar = new XYChart.Data<String, Number>("test", 120);
series.getData().add(bar);


chartFxPanel.setScene(new Scene(chart));
chart.getData().add(series);


for (Node n : chart.lookupAll(".bar-legend-symbol.default-color0")) {
    n.setStyle("-fx-background-color: " + "red"+ ";");
   }

如何更改图例项的颜色?


共有1个答案

叶茂
2023-03-14

如果您将查找/setStyle 代码包装在 Platform.runLater 调用中(或者最坏的情况是,使用像本示例这样的时间轴延迟它),它可能会起作用。这些构造使 JavaFX 系统有机会在下一个脉冲上处理数据项更改并设置其样式,以便随后可以重写它。

为什么不能使用css样式表而不是使用java代码查找来定制样式呢?也就是说,使用JavaFX图表样式指南中概述的类似技术。那么您就不需要处理与查找时间相关的问题,这似乎更好。

 类似资料:
  • 我正在使用gnuplot绘制条形图。 问题是:我希望每个酒吧都有不同的颜色。例如:红色的MSA-GA ACO和蓝色的MSA-GA PACO。 我该怎么做呢? 以下是我使用过的命令: “data.dat”:

  • 问题内容: 如何在JavaFX中更改条形的颜色? 我找不到通过CSS 方法更改颜色的方法。 问题答案: 您可以使用css设置条的颜色 使用setStyle方法: 在Node类中使用 lookupAll方法, 查找与给定CSS选择器匹配的所有节点,包括该节点和所有子节点。如果找不到匹配项,则返回一个空的不可修改的集合。该集合明确无序。 代码:

  • 不幸的是,这个回调似乎从来没有被调用。

  • 我正在尝试使用ChartJS创建一个条形图,如下所示: 我想知道如何分别为每个条添加渐变颜色,并根据它们的高度添加渐变颜色。 我在这里找到了一个非常接近的解决方案,但它为整个图形设置了,而不是单个条。 另外,如果我为每个条创建渐变,这个解决方案更接近,但是,我想根据条的高度设置渐变。 有没有办法指定根据酒吧高度,而不是坐标上的

  • 我试图理解他们条形图上的ChartJS文档。这对我来说没有意义,因为顶部的标签在一次意义上看起来似乎只适用于第一个栏(基于颜色),在另一种意义上,它适用于整个图表(它是唯一一个不在工具提示中的标签,它位于前面和中间) 我一直在努力使它更像他们的折线图,它显示了一个带有标签的图例和一个与图表上每条线相关的彩色正方形。(他们没有多行图表的示例,但它确实是这样工作的)。 我希望在顶部有一个图例,表示浅绿