如何在jfreechart xy图中获取鼠标的y或x轴坐标

时间:2013-08-27 01:42:18

标签: java mouse coordinates jfreechart

我已经设法使用jfreechart绘制了一个带有几个点的xy图表。

我要做的是能够点击已绘制的线上的任意位置并获取其x或y轴值。

有人可以帮帮我吗? 这是我第一次使用j freechart,我觉得有点迷失。

我创建了数据集并生成了图表。

TimeSeries s = new TimeSeries("security", Day.class);
        while (rate_i.hasNext()) {    
            rate r = (rate) rate_i.next();    
            Calendar cal = Calendar.getInstance();
            cal.setTime(r.d);
            int month = cal.get(Calendar.MONTH) + 1;
            int day = cal.get(Calendar.DATE);
            int year = cal.get(Calendar.YEAR);
            s.add(new Day(day, month, year), r.rate);    
        }
        TimeSeriesCollection ds = new TimeSeriesCollection();
        ds.addSeries(s);
        JFreeChart chart = ChartFactory.createTimeSeriesChart(
                "Security Performance over time.", // title
                "Date", // x-axis label
                "Value", // y-axis label
                ds, // data
                true, // create legend?
                true, // generate tooltips?
                false // generate URLs?
                );
        XYPlot xyplot = (XYPlot) chart.getPlot();
        xyplot.setDomainPannable(true);
        xyplot.setRangePannable(false);
        xyplot.setDomainCrosshairVisible(true);
        xyplot.setRangeCrosshairVisible(true);
        org.jfree.chart.renderer.xy.XYItemRenderer xyitemrenderer = xyplot
                .getRenderer();
        if (xyitemrenderer instanceof XYLineAndShapeRenderer) {
            XYLineAndShapeRenderer xylineandshaperenderer = 
                  (XYLineAndShapeRenderer) xyitemrenderer;
            xylineandshaperenderer.setBaseShapesVisible(false);
        }
        DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis();
        dateaxis.setDateFormatOverride(
             new SimpleDateFormat("EEE, MMM d, ''yy"));    
        ChartFrame frame = new ChartFrame("Chart", chart);
        frame.setVisible(true);
        frame.setSize(700, 900);

1 个答案:

答案 0 :(得分:2)

ChartMouseListener添加到随附的ChartPanel;示例见herehereChartEntity将包含有关鼠标目标的详细信息。