JavaFX StackedBarChart自动在不同系列上重复使用相同的颜色:如何避免呢?

JavaFX StackedBarChart自动在不同系列上重复使用相同的颜色:如何避免呢?,第1张

JavaFX StackedBarChart自动在不同系列上重复使用相同的颜色:如何避免呢?

颜色在8个系列之后被回收(原因是必须对定义的颜色数量进行一定的硬编码限制:JavaFX
CSS语法只是没有提供足够的语法来计算任意值,而对于超出该范围的系列限制需要定义的一些颜色)。

要为8号以后的系列创建颜色,您需要做两件事:在表示其他系列的节点上设置样式类,并为CSS中的样式设置样式。

SSCCE:

import java.util.Random;import javafx.application.Application;import javafx.scene.Scene;import javafx.scene.chart.CategoryAxis;import javafx.scene.chart.NumberAxis;import javafx.scene.chart.StackedBarChart;import javafx.scene.chart.XYChart.Data;import javafx.scene.chart.XYChart.Series;import javafx.scene.layout.BorderPane;import javafx.stage.Stage;public class StackedBarChartExample extends Application {    @Override    public void start(Stage primaryStage) {        StackedBarChart<String, Number> chart = new StackedBarChart<>(new CategoryAxis(), new NumberAxis());        Random rng = new Random();        int numSeries = 10 ;        int defaultColorsDefined = 8 ;        for (int i = 0; i < numSeries; i++) { Series<String, Number> series = new Series<>(); Data<String, Number> untreated = new Data<>("Untreated", rng.nextDouble()); series.getData().add(untreated); Data<String, Number> treated = new Data<>("Treated", rng.nextDouble()); series.getData().add(treated); series.setName("Series "+i); chart.getData().add(series); // add style classes for additional series beyond the default support: // Note this must be done after adding the series to the chart... if (i >= defaultColorsDefined) {     untreated.getNode().getStyleClass().add("default-color"+i);     treated.getNode().getStyleClass().add("default-color"+i); }        }        BorderPane root = new BorderPane(chart);        Scene scene = new Scene(root);        scene.getStylesheets().add("stacked-bar-chart.css");        primaryStage.setScene(scene);        primaryStage.show();    }    public static void main(String[] args) {        launch(args);    }}

然后只需按常规方法在CSS中定义一些颜色即可:

.default-color8.chart-bar {    -fx-bar-fill: black ;}.default-color9.chart-bar {    -fx-bar-fill: green ;}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5501886.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存