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