JavaFX:如何在 XY 线图的 Y 轴上正确实现 `getValueForDisplay()`?

JavaFX: How to correctly implement `getValueForDisplay()` on Y Axis of a XY line Graph?

我正在尝试在折线图上实现工具提示以显示 X 轴和 Y 轴的值,我在 X 轴上正确获取值,但 Y 轴值计算不正确。我试着做数学,但到目前为止,当我们调整 window 的大小时,值变得不正确没有任何帮助。有什么逻辑可以帮助我们正确计算 Y 轴上的值吗?

       // lineChart is an object of AreaChart Or XYChart
       lineChart.setOnMouseMoved(new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent event) {

            Tooltip t= new Tooltip("X:"+lineChart.getXAxis().getValueForDisplay(event.getX()-lineChart.getXAxis().getLayoutX())+", Y:"+
            lineChart.getYAxis().getValueForDisplay(event.getY()));
            t.show(stage);
        }
    });

这应该可以满足您的需求:

public void handle(MouseEvent event) {
    Point2D pointInScene = new Point2D(event.getSceneX(), event.getSceneY());
    Axis<Number> xAxis = lineChart.getXAxis();
    Axis<Number> yAxis = lineChart.getYAxis();
    double xPosInAxis = xAxis.sceneToLocal(new Point2D(pointInScene.getX(), 0)).getX();
    double yPosInAxis = yAxis.sceneToLocal(new Point2D(0, pointInScene.getY())).getY();
    double x = xAxis.getValueForDisplay(xPosInAxis).doubleValue();
    double y = yAxis.getValueForDisplay(yPosInAxis).doubleValue();

    Tooltip t = new Tooltip("X: "+x+", Y:"+y);
    t.show(stage);
}