2013-04-15 39 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) {} 
    } 
}