【问题标题】:JFreeChart Get Legend GraphicJFreeChart 获取图例图形
【发布时间】:2012-01-08 06:53:17
【问题描述】:

在我的应用程序中,我在表格中以及通过双轴条/线 JFreeChart 显示数据。为了节省一些空间(因为图表被保存为 PNG 并使用 iText PDF 放在 PDF 上),我想从图例中获取图形,在表格视图中使用它们,然后删除图例。

有没有办法抓取与图例项目一起存在的图标?我找到了LegendGraphic 类,这似乎是从LegendItem 中检索图标的方法,但在LegendItem 的文档中没有找到任何表明它的方法。

最好将它们返回到可以轻松用于创建com.itextpdf.text.Image 的对象中,例如byte[]java.awt.Image

【问题讨论】:

    标签: java jfreechart


    【解决方案1】:

    您可以使用图表渲染器的getLegendItem() 方法获取系列的LegendItem。您可以使用ShapeUtilities 的方法更改系列的Shape,如example 所示。有关createStandardSeriesShapes() 工作原理的详细信息,另请参阅DefaultDrawingSupplier

    附录:请注意,即使您创建没有图例的图表或稍后使用chart.removeLegend(),渲染器的getLegendItem() 方法也有效。一旦你有了LegendItem,你就可以根据需要使用它的属性了。

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

    【讨论】:

    • 感谢您的示例。这将使我明白我可以使用 Graphics2D 绘制一些形状等。我希望 API 中有一些东西可以阻止我重建图例图标,但这仍然有效。再次感谢。
    • LegendItem 的临时性质让图例与渲染器保持同步。您可以实现RendererChangeListener 并将您的表注册到渲染器。
    猜你喜欢
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    相关资源
    最近更新 更多