Javafx 如何在图表空间中获取鼠标位置

Javafx 如何在图表空间中获取鼠标位置,javafx,javafx-8,Javafx,Javafx 8,如何获得XYChart上的鼠标位置(在图表空间坐标中) 下面是我尝试使用NumberAxis.getValueForDisplay的一个示例: 但是当我运行这个程序时,我得到的坐标偏移误差约为10.6,-4.8。您正在向getValueForDisplay提供相对于图表的x和y坐标。。。方法。您需要相对于实际轴的坐标。X轴将从图表边缘偏移,以便为Y轴留出水平空间,可能还有其他填充,反之亦然 要执行此操作,请获取鼠标事件相对于场景的坐标,并将其转换为轴的坐标系: chart.setOnMouseP

如何获得XYChart上的鼠标位置(在图表空间坐标中)

下面是我尝试使用NumberAxis.getValueForDisplay的一个示例:

但是当我运行这个程序时,我得到的坐标偏移误差约为10.6,-4.8。

您正在向getValueForDisplay提供相对于图表的x和y坐标。。。方法。您需要相对于实际轴的坐标。X轴将从图表边缘偏移,以便为Y轴留出水平空间,可能还有其他填充,反之亦然

要执行此操作,请获取鼠标事件相对于场景的坐标,并将其转换为轴的坐标系:

chart.setOnMousePressed((MouseEvent event) -> {

    Point2D mouseSceneCoords = new Point2D(event.getSceneX(), event.getSceneY());
    double x = xAxis.sceneToLocal(mouseSceneCoords).getX();
    double y = yAxis.sceneToLocal(mouseSceneCoords).getY();

    primaryStage.setTitle("" +
        xAxis.getValueForDisplay(x) + ",  " +
        yAxis.getValueForDisplay(y)
    );
});
chart.setOnMousePressed((MouseEvent event) -> {

    Point2D mouseSceneCoords = new Point2D(event.getSceneX(), event.getSceneY());
    double x = xAxis.sceneToLocal(mouseSceneCoords).getX();
    double y = yAxis.sceneToLocal(mouseSceneCoords).getY();

    primaryStage.setTitle("" +
        xAxis.getValueForDisplay(x) + ",  " +
        yAxis.getValueForDisplay(y)
    );
});