gpt4 book ai didi

javafx - 更改图表颜色

转载 作者:行者123 更新时间:2023-12-02 04:46:29 24 4
gpt4 key购买 nike

我测试了这个 css 代码来更改图表颜色,但是当我运行代码时,我得到了 NPE:

public class MainApp extends Application {

@Override public void start(Stage stage) {
stage.setTitle("Line Chart Sample");
//defining the axes
final NumberAxis xAxis = new NumberAxis();
final NumberAxis yAxis = new NumberAxis();
xAxis.setLabel("Number of Month");
//creating the chart
final LineChart<Number,Number> lineChart = new LineChart<>(xAxis,yAxis);


// Look up first series fill
Node node = lineChart.lookup(".default-color0.chart-series-area-fill");
// Set the first series fill to translucent pale green
node.setStyle("-fx-fill: linear-gradient(#f2f2f2, #d4d4d4);"
+ " -fx-background-insets: 0 0 -1 0, 0, 1, 2;"
+ " -fx-background-radius: 3px, 3px, 2px, 1px;");

Node nodew = lineChart.lookup(".chart-series-area-line");
// Set the first series fill to translucent pale green
nodew.setStyle("-fx-stroke: #989898; -fx-stroke-width: 1px; ");



lineChart.setTitle("Stock Monitoring, 2010");
//defining a series
XYChart.Series series = new XYChart.Series();
series.setName("My portfolio");
//populating the series with data
series.getData().add(new XYChart.Data(1, 23));
series.getData().add(new XYChart.Data(2, 14));
series.getData().add(new XYChart.Data(3, 15));
series.getData().add(new XYChart.Data(4, 24));
series.getData().add(new XYChart.Data(5, 34));
series.getData().add(new XYChart.Data(6, 36));
series.getData().add(new XYChart.Data(7, 22));
series.getData().add(new XYChart.Data(8, 45));
series.getData().add(new XYChart.Data(9, 43));
series.getData().add(new XYChart.Data(10, 17));
series.getData().add(new XYChart.Data(11, 29));
series.getData().add(new XYChart.Data(12, 25));

Scene scene = new Scene(lineChart,800,600);
lineChart.getData().add(series);

stage.setScene(scene);
stage.show();
}

public static void main(String[] args) {
launch(args);
}

}

这一行是问题所在:

node.setStyle("-fx-fill: linear-gradient(#f2f2f2, #d4d4d4);".........);

你能告诉我如何解决这个问题吗?此 CSS 代码用于 AreaChart。现在我想在 LineChart 中使用它。

附注

我还尝试了示例中的 CSS:

http://docs.oracle.com/javafx/2/charts/css-styles.htm

Node node = lineChart.lookup(".default-color0.chart-series-line");
// Set the first series fill to translucent pale green
node.setStyle("-fx-stroke: #e9967a;");

但我再次得到 NPE。

最佳答案

  1. 请确保您引用css documentation对于 type of node you are using查看它支持哪些样式类。
  2. 在将 css 样式应用到节点之前,查找通常不可用。这意味着,至少它必须已渲染到屏幕上,但似乎有时还需要一两帧。因此,如果您想使用查找,则必须在调用 stage.show(); 之后调用它,有时您需要采取进一步的步骤来稍后调用它。
  3. 更好的方法是使用外部样式表。请参阅tutorial :还有一个特定页面 styling charts .

更新(附加想法):

在 Java 8 中(也许在 JavaFX 2.2 中:我没有方便的 caspian.css 副本),所有与数据相关的颜色都是根据 lookup colors 定义的。 CHART_COLOR_1CHART_COLOR_8。这提供了一个很好的单行线来设置颜色,至少:

lineChart.setStyle("CHART_COLOR_1: #e9967a;");

关于javafx - 更改图表颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23228344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com