获取散点图坐标 XYChart.Data JavaFX

问题描述

我正在尝试获取一系列散点图的每个数据(点)的坐标。

public class Main extends Application {

@Override public void start(Stage stage) {
    stage.setTitle("Scatter Chart Issue");
    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("Time");
    yAxis.setLabel("Random data");
    sc.setTitle("Chart");

    XYChart.Series series1 = new XYChart.Series();
    series1.setName("Series1");
    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));
    sc.getData().add(series1);


    for(XYChart.Data<Number,Number> dot : sc.getData().get(0).getData()) {
        double xCoordinate = dot.getNode().localToScene(dot.getNode().getBoundsInLocal()).getMinX();
        double yCoordinate = dot.getNode().localToScene(dot.getNode().getBoundsInLocal()).getMinY();
        System.out.println(xCoordinate + "," + yCoordinate);
    }



    Scene scene  = new Scene(sc,400);
    stage.setScene(scene);
    stage.show();
}

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

}

这是我得到的,似乎该系列的所有点都具有相同的坐标,这是错误的:

enter image description here

因此,我的问题是:如何从一系列散点图中获取每个数据的坐标? 谢谢。

编辑:添加完整的工人阶级

解决方法

将 for 循环放在 stage.show 之后:

您在布局发生之前要求坐标(因此尚未设置所有节点的坐标)。

Scene scene  = new Scene(sc,500,400);
stage.setScene(scene);
stage.show();

for(XYChart.Data<Number,Number> dot : sc.getData().get(0).getData()) {
    double xCoordinate = dot.getNode().localToScene(dot.getNode().getBoundsInLocal()).getMinX();
    double yCoordinate = dot.getNode().localToScene(dot.getNode().getBoundsInLocal()).getMinY();
    System.out.println(xCoordinate + "," + yCoordinate);
}