在我的应用程序中,我在表格中显示数据以及通过Dual Axis Bar / Line JFreeChart显示数据。为了节省一些空间(因为图表被保存为PNG并使用iText PDF放置PDF),我想从图例中获取图形,在表格视图中使用它们,并删除图例。
有没有办法抓住图例项目的图标?我找到了LegendGraphic
类,它似乎是从LegendItem
检索图标的方法,但在LegendItem
的文档中没有找到任何表明它的内容。
最好将它们返回到可以轻松用于创建com.itextpdf.text.Image
的对象中,例如byte[]
或java.awt.Image
。
答案 0 :(得分:3)
您可以使用图表渲染器的getLegendItem()
方法获得系列“LegendItem
”。您可以使用ShapeUtilities
的方法更改系列“Shape
”,如example所示。另请参阅DefaultDrawingSupplier
了解createStandardSeriesShapes()
如何运作的详细信息。
附录:请注意,即使您创建的图表没有图例,或者稍后使用getLegendItem()
,渲染器的chart.removeLegend()
方法仍然有效。获得LegendItem
后,您可以根据需要使用它的属性。
System.out.println(renderer.getLegendItem(0, 0).getShape());
System.out.println(renderer.getLegendItem(0, 0).getFillPaint());