2009-10-02 38 views
8

¿Hay alguna forma en JFreeChart para determinar desde un evento ChartMouseEvent que las coordenadas x, y (en el espacio de la gráfica) el mouse ha terminado? Intenté usar el valor de retícula del dominio, pero parece impreciso y retrasa el evento real del mouse.JFreeChart obtener coordenadas del mouse

gracias,

Jeff

Respuesta

14

coordenadas del ratón de getTrigger() son en relación con ChartPanel por lo que necesita para convertirlos:

Point2D p = chartPanel.translateScreenToJava2D(mouseChartEvent.getTrigger().getPoint()); 
Rectangle2D plotArea = chartPanel.getScreenDataArea(); 
XYPlot plot = (XYPlot) chart.getPlot(); // your plot 
double chartX = plot.getDomainAxis().java2DToValue(p.getX(), plotArea, plot.getDomainAxisEdge()); 
double chartY = plot.getRangeAxis().java2DToValue(p.getY(), plotArea, plot.getRangeAxisEdge()); 
+0

Gracias. No pude entender cuál era el argumento de plotArea. Funcionó como un encanto, lo aprecio. –

+5

Aquí parece haber una capa de conversión demasiado. Obtengo resultados incorrectos con esto si el 'ChartPanel' ha sido escalado de sus dimensiones predeterminadas. Al eliminar el paso 'translateScreenToJava2D' y al suministrar el punto desde' MouseEvent.getPoint() 'directamente a' java2DToValue', se obtienen los valores correctos en ese caso también. –

+0

gracias! buscando lo mismo – bjarven

Cuestiones relacionadas