2010-07-27 12 views

cevap

4

Tamam, sadece kendim yaptım. Bu şekilde her ikinci öğeyi efsaneden kaldırırım. lütfen yorum bırakın!

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

Bu dinamik bir çözüm için iyidir. Ayrıca, renderer.getLegendItems() ve plot.setFixedLegendItems() yöntemlerini kullanmak da mümkündür. Bu daha basit bir çözüm sunar, ancak sabit efsaneyi ayarladıktan sonra efsaneniz değişmeyecekse iyidir. Çözümün ayrıntılarını oluşturmak için zamanım yok, ancak AbstractXYItemRenderer ve XYPlot'ta getLegendItems ve setFixedLegendItems'i arayın. – Jason

9

Yukarıdaki öneriyi denedim, ancak benim için işe yaramadı. Diziden yalnızca efsaneyi kaldırmak istiyorsanız, setSeriesVisibleInLegend() yöntemiyle bunu yapabilirsiniz. Benim senaryolarımda bazı serilerimin bir efsane anahtarı yoktu. Bir efsane anahtarı yoksa, diziler efsanede görünmemelidir. Aşağıdaki kod ile bu uygulamaya:

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

seriesList O grafik oluşturmak için grafik verilerin tümünü tutan yarattı seriesData pojo yılların listesidir. seriesData nesnesinin anahtar değeri null veya = "" ise, dizinin açıklaması gösterilmeyecektir.

İlgili konular