【问题标题】:How can I change the points colors of a ScatterChart using javafx inside java code?如何在 java 代码中使用 javafx 更改 ScatterChart 的点颜色?
【发布时间】:2018-10-11 14:38:31
【问题描述】:

尽我所能

Set<Node> nodes = lineChart.lookupAll(".series" + index);
for (Node n : nodes) {
    n.setStyle("...css style code...");
}

对于 LineChart,我怎样才能对 ScatterChart 做同样的事情?

【问题讨论】:

  • 您发布的代码没有任何问题。我刚刚进行了测试,它运行良好。去here获取一些想法。
  • 是的。对于 LineChart 它有效。但对于 ScatterChart 则不要。
  • 另外,使用CSS 可能更容易做到这一点。

标签: java javafx lookup


【解决方案1】:

这是节点/颜色更改的MCVE。来自here的代码。

import java.util.Set;
import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.ScatterChart;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;

public class ScatterChartSample extends Application
{

    @Override
    public void start(Stage stage)
    {
        stage.setTitle("Scatter Chart Sample");
        final NumberAxis xAxis = new NumberAxis(0, 10, 1);
        final NumberAxis yAxis = new NumberAxis(-100, 500, 100);
        final ScatterChart<Number, Number> sc = new ScatterChart<Number, Number>(xAxis, yAxis);
        xAxis.setLabel("Age (years)");
        yAxis.setLabel("Returns to date");
        sc.setTitle("Investment Overview");

        XYChart.Series series1 = new XYChart.Series();
        series1.setName("Equities");
        series1.getData().add(new XYChart.Data(4.2, 193.2));
        series1.getData().add(new XYChart.Data(2.8, 33.6));
        series1.getData().add(new XYChart.Data(6.2, 24.8));
        series1.getData().add(new XYChart.Data(1, 14));
        series1.getData().add(new XYChart.Data(1.2, 26.4));
        series1.getData().add(new XYChart.Data(4.4, 114.4));
        series1.getData().add(new XYChart.Data(8.5, 323));
        series1.getData().add(new XYChart.Data(6.9, 289.8));
        series1.getData().add(new XYChart.Data(9.9, 287.1));
        series1.getData().add(new XYChart.Data(0.9, -9));
        series1.getData().add(new XYChart.Data(3.2, 150.8));
        series1.getData().add(new XYChart.Data(4.8, 20.8));
        series1.getData().add(new XYChart.Data(7.3, -42.3));
        series1.getData().add(new XYChart.Data(1.8, 81.4));
        series1.getData().add(new XYChart.Data(7.3, 110.3));
        series1.getData().add(new XYChart.Data(2.7, 41.2));

        XYChart.Series series2 = new XYChart.Series();
        series2.setName("Mutual funds");
        series2.getData().add(new XYChart.Data(5.2, 229.2));
        series2.getData().add(new XYChart.Data(2.4, 37.6));
        series2.getData().add(new XYChart.Data(3.2, 49.8));
        series2.getData().add(new XYChart.Data(1.8, 134));
        series2.getData().add(new XYChart.Data(3.2, 236.2));
        series2.getData().add(new XYChart.Data(7.4, 114.1));
        series2.getData().add(new XYChart.Data(3.5, 323));
        series2.getData().add(new XYChart.Data(9.3, 29.9));
        series2.getData().add(new XYChart.Data(8.1, 287.4));

        sc.getData().addAll(series1, series2);
        Scene scene = new Scene(sc, 500, 400);
        stage.setScene(scene);
        stage.show();

        Set<Node> nodes = sc.lookupAll(".series" + 0);
        for (Node n : nodes) {
            n.setStyle("-fx-background-color: #860061, white;\n"
                    + "    -fx-background-insets: 0, 2;\n"
                    + "    -fx-background-radius: 5px;\n"
                    + "    -fx-padding: 5px;");
        }
    }

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

【讨论】:

  • 重现问题后,发现在XYChart.Series中没有添加XYChart.Data时样式不起作用。谢谢!!!!
猜你喜欢
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
相关资源
最近更新 更多