Jfreechart - как добавить элемент легенды с тире? - PullRequest
4 голосов
/ 25 августа 2011

Я хочу добавить элемент легенды с тире (-), чтобы обозначить некоторые серии в моем графике. Форма по умолчанию - это только Plot.DEFAULT_LEGEND_ITEM_CIRCLE и Plot.DEFAULT_LEGEND_ITEM_BOX. Есть ли что-то вроде Plot.DEFAULT_LEGEND_ITEM_LINE? Как его создать?

1 Ответ

6 голосов
/ 25 августа 2011

Вы можете создать свой собственный источник легенды. Предполагая, что у вас есть коллекция элементов, соответствующих легендам, которые вы хотите отобразить, она называется legendKeys:

class LineLegendItemSource implements LegendItemSource {
    public LegendItemCollection getLegendItems() {
     LegendItemCollection itemCollection = new LegendItemCollection();
     for (Comparable comparable : legendKeys) {
        Paint paint = // get the paint you want
        LegendItem item = new LegendItem("string to display", 
                                         "description", 
                                         "tooltip", 
                                         "url", 
                                         new Line2D.Double(0, 5, 10, 5), paint);
        itemCollection.add(item);
     }
     return itemCollection; 
  }
}

Затем вам нужно удалить старые легенды с графика и добавить новые:

JFreeChart chart = // your chart 
chart.removeLegend();
LegendTitle legend = new LegendTitle(new LineLegendItemSource());
chart.addLegend(legend);

Как видите, конструктор LegendItem принимает форму, так что вы можете рисовать там, что хотите.

...