Charts 更改JasperReports图表的呈现方式
我正在尝试更改JasperReports中图表的渲染类型。我已经正确设置了图表定制器属性,可以找到该类[在调试时命中],但是在呈现报告时不会进行请求的更改 JRChartCustomizer类是:Charts 更改JasperReports图表的呈现方式,charts,jasper-reports,Charts,Jasper Reports,我正在尝试更改JasperReports中图表的渲染类型。我已经正确设置了图表定制器属性,可以找到该类[在调试时命中],但是在呈现报告时不会进行请求的更改 JRChartCustomizer类是: public class PriceGraph implements JRChartCustomizer { public void customize(JFreeChart chart, JRChart jasperChart) { XYPlot plot = (XYPlo
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);
}
}
以前有人遇到过这个问题吗?您需要调用
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);
}
那么,为什么会接受这个答案呢?我添加了plot.setRenderer(renderer),它仍然从中生成不同的形状:在您的代码和我的代码之间还有一些其他的差异。我使用concrete renderer类而不是接口,为特定系列设置形状和渲染器,并调用
setSeriesShapesVisible(…)
以确保显示形状。请参阅上面的更改。问题是每个数据点都配置为一个新系列。更改此选项修复了自定义形状等的问题。之后,代码也不需要setRenderer