2009-10-02 99 views
8

在JFreeChart中有一種方法可以根據ChartMouseEvent確定鼠標結束後的x,y座標(在繪圖空間中)嗎?我試過使用域十字線值,但似乎不準確,滯後於實際的鼠標事件。JFreeChart獲取鼠標座標

感謝,

傑夫

回答

14

鼠標座標從getTrigger()相對於ChartPanel所以你需要將它們轉換:

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

感謝。我無法弄清楚plotArea論據應該是什麼。像魅力一樣工作,欣賞它。 –

+5

這似乎是一個轉換層太多。如果ChartPanel從默認尺寸縮放,我會得到不正確的結果。去除'translateScreenToJava2D'步驟並直接從'MouseEvent.getPoint()'提供點到'java2DToValue',在這種情況下也會給出正確的值。 –

+0

謝謝!尋找同樣的事情 – bjarven