2009-10-02 40 views
8

Có cách nào trong JFreeChart để xác định từ một ChartMouseEvent rằng x, y tọa độ (trong không gian âm mưu) chuột đã kết thúc? Tôi đã thử sử dụng giá trị crosshair miền nhưng điều đó có vẻ không chính xác và thiếu sự kiện chuột thực tế.JFreeChart nhận tọa độ chuột

cảm ơn,

Jeff

Trả lời

14

Chuột phối từ getTrigger() có liên quan đến ChartPanel vì vậy bạn cần phải chuyển đổi chúng:

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

Cảm ơn. Tôi không thể hiểu được lập luận của plotArea là gì. Làm việc như một say mê, đánh giá cao nó. –

+5

Đây có vẻ là một lớp chuyển đổi quá nhiều. Tôi nhận được kết quả không chính xác với điều này nếu 'ChartPanel' đã được thu nhỏ từ kích thước mặc định của nó. Xóa bước 'translateScreenToJava2D' và cung cấp điểm từ' MouseEvent.getPoint() 'trực tiếp đến' java2DToValue' cũng cung cấp các giá trị chính xác trong trường hợp đó. –

+0

cảm ơn! tìm kiếm cùng một điều – bjarven

Các vấn đề liên quan