JFreeChart получить графический объект Legend - PullRequest
2 голосов
/ 29 ноября 2011

В моем приложении я показываю данные как в таблице, так и через JFreeChart с двумя осями. Чтобы сэкономить место (так как диаграммы сохраняются в формате PNG и помещаются в PDF с iText PDF), я хотел взять графику из легенды, использовать ее в табличном представлении и удалить легенду.

Есть ли способ захватить значки, которые лежат рядом с элементом легенды? Я нашел класс LegendGraphic, который, похоже, был бы методом для извлечения значка из LegendItem, но не нашел в документации ничего для LegendItem, которое указывало бы на это.

Было бы предпочтительным, если бы они были возвращены в объекте, который можно легко использовать для создания com.itextpdf.text.Image, например byte[] или java.awt.Image.

1 Ответ

3 голосов
/ 29 ноября 2011

Вы можете получить серию 'LegendItem, используя метод getLegendItem() средства визуализации диаграмм.Вы можете изменить серию 'Shape, используя методы ShapeUtilities, как показано в этом примере .См. Также DefaultDrawingSupplier для получения подробной информации о том, как работает createStandardSeriesShapes().

Добавление: обратите внимание, что метод визуализации getLegendItem() работает, даже если вы создаете диаграмму сбез легенды или позже используйте chart.removeLegend().Если у вас есть LegendItem, вы можете использовать его атрибуты по мере необходимости.

System.out.println(renderer.getLegendItem(0, 0).getShape());
System.out.println(renderer.getLegendItem(0, 0).getFillPaint());
...