2013-04-15 40 views
0

我有XYdataset用于绘图时间序列。 我需要在X轴上找到项目编号,只需点击图表即可。 下方的行在我点击系列时在X轴上获取项目,如果点击图表中的空白区域,则返回null。我只需要项目(X)而不是Y,我可以在图表中点击系列或空白区域。有可能得到这个吗? 感谢您的帮助通过点击jfreechart找到X(item)

 //---------------------------------------------------------------------- 
     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

为了更好的帮助,请编辑您的问题包括[SSCCE(http://sscce.org/)。 – trashgod

回答

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) {} 
    } 
}