2009-10-02 9 views
8

Y at-il un moyen dans JFreeChart de déterminer à partir d'un ChartMouseEvent que les coordonnées x, y (dans l'espace de tracé) la souris est terminée? J'ai essayé d'utiliser la valeur du réticule du domaine, mais cela semble inexact et retarde l'événement réel de la souris.JFreeChart obtient les coordonnées de la souris

grâce,

Jeff

Répondre

14

coordonnées de la souris de getTrigger() sont liés à ChartPanel si vous avez besoin de les convertir:

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

Merci. Je ne pouvais pas comprendre ce que l'argument plotArea était supposé être. Travaillé comme un charme, appréciez-le. –

+5

Ici, il semble y avoir trop de couche de conversion. J'obtiens des résultats incorrects avec ceci si le ChartPanel a été mis à l'échelle de ses dimensions par défaut. Supprimer l'étape 'translateScreenToJava2D' et fournir le point de' MouseEvent.getPoint() 'directement à' java2DToValue' donne aussi des valeurs correctes dans ce cas. –

+0

merci! à la recherche de la même chose – bjarven

Questions connexes