2009-10-02 7 views
8

क्या चार्टर्डउसवेंट से निर्धारित करने के लिए JFreeChart में कोई तरीका है कि 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

धन्यवाद। मैं यह नहीं समझ सका कि क्या साजिश एरिया तर्क होना चाहिए था। एक आकर्षण की तरह काम किया, इसकी सराहना करते हैं। –

+5

यहां एक रूपांतरण परत बहुत अधिक प्रतीत होती है। यदि 'चार्टपैनेल' को इसके डिफ़ॉल्ट आयामों से स्केल किया गया है तो मुझे इसके साथ गलत परिणाम मिलते हैं। 'TranslateScreenToJava2D' चरण को हटाने और' MouseEvent.getPoint() 'से सीधे बिंदु को 'java2DToValue' से बिंदु को उस मामले में सही मान भी देता है। –

+0

धन्यवाद! एक ही चीज़ की तलाश में – bjarven