2010-07-27 10 views

risposta

4

ok, l'ho fatto solo io. In questo modo rimuovo ogni secondo oggetto dalla legenda. per favore lascia un commento!

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

Questo va bene per una soluzione dinamica. È anche possibile utilizzare renderer.getLegendItems() e plot.setFixedLegendItems(). Ciò fornisce una soluzione più semplice, ma è valida solo se la tua legenda non cambierà dopo aver impostato la legenda fissa. Non ho tempo per creare i dettagli della soluzione, ma cerco getLegendItems e setFixedLegendItems in AbstractXYItemRenderer e XYPlot. – Jason

9

Ho provato il suggerimento di cui sopra ma non sembra funzionare per me. Se si desidera rimuovere solo serie dalla legenda, è possibile farlo con il metodo setSeriesVisibleInLegend(). Il mio scenario era che alcune delle mie serie non avevano una chiave della legenda. Se non hanno una chiave della legenda, la serie non dovrebbe essere visibile nella legenda. Ho implementato questo con il seguente codice:

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

Il seriesList è una lista di seriesData POJO di che ho creato che contiene tutti i dati del grafico per creare il grafico. Se il valore della chiave dell'oggetto seriesData è null o = "", la serie non sarà visibile nella legenda.

Problemi correlati