2015-07-13 46 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); 
} 
相關問題