2010-07-27 69 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= ""那么该图例将不会在图例中可见。