我有一个 JavaFX 饼图,我想要与特定区域关联的颜色。但是,似乎我只能将颜色与 Data
添加到图表的顺序相关联。例如,如果我想绘制 parking 场中汽车的颜色,我可以这样做:
.default-color0.chart-pie { -fx-pie-color: #FF0000; }
.default-color1.chart-pie { -fx-pie-color: #00FF00; }
.default-color2.chart-pie { -fx-pie-color: #0000FF; }
.default-color3.chart-pie { -fx-pie-color: #FFFF00; }
.default-color4.chart-pie { -fx-pie-color: #00FFFF; }
只要我先添加“红色汽车”数据,然后添加“绿色汽车”数据等,一切都很好。但是如果没有红色汽车,并且我不添加该数据,那么绿色汽车就会变成红色,因为它们是第一个数据点。我可以添加一个 Data("Red", 0)
,但随后它在我的饼图中显示为面积为零的切片,但它仍然有一个标签,这可能会令人困惑。有什么办法可以避免这种情况吗?要么将具有零数据的 Data
对象标记为不可见,要么为类别分配常量颜色?
好吧,这就是我最终所做的(并且有效):
Platform.runLater(new Runnable() {
@Override
public void run() {
for (int i = 0; i < usedColors.size(); i++) {
for (Node node : chart.lookupAll(String.format(".default-color%d.chart-pie", i))) {
node.setStyle(String.format("-fx-pie-color: #%06x;", usedColors.get(i)));
}
}
}
});
其中 usedColors
是一个按顺序包含正确颜色的列表。这也会影响图例。使用runLater是必要的。
感谢评论中每个人提供的帮助。
我是一名优秀的程序员,十分优秀!