2011-05-22 183 views
4

我一直在試圖讓一個JFreeChart的當前鼠標座標,發現下面的解決方案是工作部分jfreechart的獲取鼠標座標

JFreeChart get mouse coordinates

我一直在使用OHLC數據集繪製雖然我可以正確地獲取RangeAxis(意思是在子圖值中),但是我無法從上面示例中針對X軸收到的值中做出任何事情。

我確定我收到了其他格式的值(不是顯示的日期格式),任何人都可以指出我做錯了什麼?

回答

5

經過幾個小時的實驗就解決了。這是一個完整的MouseMotionListener的代碼。剛剛添加到chartPanel和瞧! - 有用! chartY返回適當的Y軸值,dateString返回完整的日期。嘗試在OHLC圖表中看起來是正確的。

MouseMotionListener mouselisten = new MouseMotionListener() { 

    public void mouseDragged(MouseEvent e) { 
     // 
    } 

    public void mouseMoved(MouseEvent e) { 
     Point2D p = e.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()); 

     DecimalFormat dfT = new DecimalFormat("00"); 
     GregorianCalendar gc = new GregorianCalendar(); 
     long lDte = (long)chartX; 
     Date dtXX = new Date(lDte); 
     gc.setTime(dtXX); 
     String sDD = dfT.format(Double.valueOf(String.valueOf(gc.get(GregorianCalendar.DAY_OF_MONTH)))); 
     String sMM = dfT.format(Double.valueOf(String.valueOf(gc.get(GregorianCalendar.MONTH)+1))); 
     String sYY = dfT.format(Double.valueOf(String.valueOf(gc.get(GregorianCalendar.YEAR)))); 
     String dateString = sDD +"/"+ sMM +"/"+ sYY; 


    } 
};