2010-07-27 57 views

回答

4

沒關係,只是自己做了。這樣我從傳說中刪除每一個第二項。 請發表評論!

LegendItemCollection legendItemsOld = plot.getLegendItems(); 
final LegendItemCollection legendItemsNew = new LegendItemCollection(); 

for(int i = 0; i< legendItemsOld.getItemCount(); i++){ 
    if(!(i%2 == 0)){ 
    legendItemsNew.add(legendItemsOld.get(i)); 
    } 
} 
LegendItemSource source = new LegendItemSource() { 
LegendItemCollection lic = new LegendItemCollection(); 
{lic.addAll(legendItemsNew);} 
public LegendItemCollection getLegendItems() { 
    return lic; 
} 
}; 
chart.addLegend(new LegendTitle(source)); 
+2

這對動態解決方案非常有用。也可以使用renderer.getLegendItems()和plot.setFixedLegendItems()。這會產生一個更簡單的解決方案,但只有在您設置固定圖例後,圖例不會更改時才更好。我沒有時間來製作解決方案的細節,但在AbstractXYItemRenderer和XYPlot中查找getLegendItems和setFixedLegendItems。 – Jason 2012-08-28 20:05:38

9

我已經嘗試了上面的建議,但它似乎沒有爲我工作。如果你只是想從圖例中刪除系列,你可以用setSeriesVisibleInLegend()方法來完成。我的情景是,我的一些系列沒有圖例關鍵字。如果他們沒有圖例鑰匙,那麼該圖例應該在圖例中不可見。我實現了這個用下面的代碼:

for(int i = 0; i < seriesList.size(); i++){ 

     if(seriesList.get(i).getKey() == null || seriesList.get(i).getKey().equals("")){ 
      graph.getXYPlot().getRenderer().setSeriesVisibleInLegend(i, Boolean.FALSE); 
     } 
    } 

seriesListseriesData POJO的,我創建了一個包含所有的圖形數據來創建圖形列表。如果seriesData對象的鍵值是null= ""那麼該圖例將不會在圖例中可見。