2009-10-02 308 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