2015-07-13 59 views
0

我想在线图上实现工具提示以显示X和Y轴的值,我正确地获取了X轴的值,但是Y轴值没有正确计算。我试图做数学,但没有任何帮助,当我们调整窗口大小时,数值变得不正确。有没有什么逻辑可以帮助我们正确计算Y轴的值?JavaFX:如何在XY线图的Y轴上正确实现`getValueForDisplay()`?

 // 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); 
     } 
    }); 

回答

3

这应该做你需要的东西:

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); 
}