单击jfreechart查找X(项目)

时间:2013-04-15 18:47:55

标签: jfreechart

我有XYdataset的情节时间序列。 我只需点击图表就可以在X轴上找到项目编号。 当我点击系列时,下面的行在X轴上获取项目,如果单击图表中的空白区域,则返回null。我需要项目(X)而不是Y,我点击图表中的系列或空白区域。有可能得到这个吗? 谢谢你的帮助

        //----------------------------------------------------------------------
        CP.addChartMouseListener(new ChartMouseListener() {

        @Override
        public void chartMouseClicked(ChartMouseEvent cme) {
            ChartEntity entity = cme.getEntity();   
            if (entity != null) {   
                System.out.println("Mouse clicked: " + entity.toString());   
            }   
            else {   
                System.out.println("Mouse clicked: null entity."+entity);   
            }   
        }
        @Override
        public void chartMouseMoved(ChartMouseEvent cme) {

        }
        //----------------------------------------------------------------------

1 个答案:

答案 0 :(得分:1)

试试这个:

import org.jfree.chart.ChartMouseEvent;
import org.jfree.chart.ChartMouseListener;
import org.jfree.chart.entity.XYItemEntity;


final class ClickedIndexMouseListener implements ChartMouseListener {

    @Override
    public void chartMouseMoved(ChartMouseEvent event) {
    }

    @Override
    public void chartMouseClicked(ChartMouseEvent event) {
        try {
            XYItemEntity ce = (XYItemEntity) event.getEntity();
            System.out.println("Item    " + ce.getItem());
            System.out.println("Series  " + ce.getSeriesIndex());
            System.out.println("X Value " + ce.getDataset().getX(ce.getSeriesIndex(),  ce.getItem()));
            System.out.println("Y Value " + ce.getDataset().getY(ce.getSeriesIndex(),  ce.getItem()));
        } catch (Exception e) {}
    }
}