2012-04-01 6 views
0

Ich habe ein Diagramm erstellen Bibliothek JFreeChart, ich versuche dies:Legende verbirgt Diagramm mit JFreeChart erstellt

TimeSeriesCollection dataset = new TimeSeriesCollection();  
ArrayList<MyObject> list = this.FillArray(); 
MyObject tmp; 
String date[]; 
for(int i=0;i<list.size();i++){ 
     tmp = list.get(i); 
     ArrayList<MyObject1> obj = this.FillArray1(tmp); 
     TimeSeries pop = new TimeSeries(tmp.getName(),Day.class); 
     for(MyObject1 ob1 : obj){ 
      date = ob1.getDate().split("-"); 
      Day day = new Day(Integer.parseInt(date[0]), Integer.parseInt(date[1]), Integer.parseInt(date[2])); 
      pop.addOrUpdate(day, ob1.getValue()); 

     } 
     dataset.addSeries(pop); 
    } 

Mein Problem Borns, wenn die Anzahl des Objekts sehr hoch ist und die Legende wird die panelchart decken. Was kann ich tun? Ist es möglich, der Legende ein Scrollfenster hinzuzufügen?

Antwort

1

Legenden in einem LegendTitle gerendert werden, addiert die erste Title zu List subtitles wenn die JFreeChart Instanz mit dem zu true gesetzt createLegend Parameter aufgebaut ist. Da JFreeChart kein Container ist und Title kein Component ist, wird das Hinzufügen einer LegendTitle zu einer JScrollPane nicht unterstützt.

Sie können immer getLegendItems() aufrufen und die Elemente in ein ScrollableContainer wie JList oder JTable machen. Um Doppelungen zu vermeiden, setzen Sie createLegend auf false.