【问题标题】:Changing the Rendering Of A JasperReports Chart更改 JasperReports 图表的呈现
【发布时间】:2011-10-11 16:11:53
【问题描述】:

我正在尝试更改 JasperReports 中图表的呈现类型。我已经正确设置了 Chart Customizer 属性,可以找到该类 [并在调试时点击] 但是在呈现报告时不会进行请求的更改。

JRChartCustomizer 类是:

public class PriceGraph implements JRChartCustomizer {

    public void customize(JFreeChart chart, JRChart jasperChart) {
        XYPlot plot = (XYPlot) chart.getPlot();
        XYItemRenderer renderer = plot.getRenderer();

        Shape shp = new Rectangle2D.Double(-0.5, -0.5, 1.0, 1.0);
        renderer.setBaseShape(shp);
        renderer.setSeriesPaint(0, Color.yellow);
        renderer.setBasePaint(Color.green);
    }
}

以前有人遇到过这个问题吗?

【问题讨论】:

    标签: charts jasper-reports


    【解决方案1】:

    您需要调用plot.setRenderer(...) 才能将渲染器实际应用到图表。

    我的代码如下所示:

    public void customize(JFreeChart chart, JRChart jasperChart) {
        XYPlot plot = (XYPlot) chart.getPlot();
        XYLineAndShapeRenderer renderer = plot.getRenderer();
        Shape shp = new Rectangle2D.Double(-0.5, -0.5, 1.0, 1.0);
        renderer.setSeriesShape(0, shp);
        renderer.setSeriesPaint(0, Color.yellow);
        renderer.setSeriesShapesVisible(0, Boolean.TRUE);
        renderer.setSeriesLinesVisible(0, Boolean.FALSE);
        plot.setRenderer(0, renderer);
    }
    

    【讨论】:

    • 为什么这被接受为答案呢? stackoverflow.com/questions/5140657/…
    • 我添加了 plot.setRenderer(renderer),它仍然生成不同的形状:stackoverflow.com/questions/7701749/…
    • 您的代码和我的代码之间还有一些其他差异。我使用具体的渲染器类而不是界面,为特定系列设置形状和渲染器,并调用setSeriesShapesVisible(...) 以确保显示形状。请参阅上面的更改。
    • 问题是每个数据点都配置为一个新系列。更改解决了自定义形状等问题。之后代码也不需要 setRenderer
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    相关资源
    最近更新 更多