2009-10-02 17 views
8

C'è un modo in JFreeChart per determinare da un ChartMouseEvent che le coordinate x, y (nello spazio di trama) il mouse è finito? Ho provato a utilizzare il valore del mirino del dominio ma sembra inaccurato e ritarda l'evento del mouse. coordinaJFreeChart ottiene le coordinate del mouse

grazie,

Jeff

risposta

14

Mouse dalla getTrigger() sono relative al ChartPanel quindi è necessario convertirli:

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

Grazie. Non riuscivo a capire quale sarebbe stato l'argomento plotArea. Ha funzionato come un fascino, lo apprezzo. –

+5

Qui sembra che ci sia uno strato di conversione troppo. Ottengo risultati errati con questo se il 'ChartPanel' è stato ridimensionato rispetto alle dimensioni predefinite. La rimozione del passaggio 'translateScreenToJava2D' e la fornitura del punto da' MouseEvent.getPoint() 'direttamente a' java2DToValue' fornisce anche i valori corretti in questo caso. –

+0

grazie! cercando la stessa cosa – bjarven

Problemi correlati