添加自定义程序类以删除条形图中条形之间的空格

时间:2014-09-05 06:27:32

标签: java jasper-reports ireport

我正在尝试添加自定义程序类来删除条形图中条形图之间的空格但是在将自定义程序类属性添加到包barchartcustomizer 后,我在iReport中出现了一些错误。我还在iReport的类路径中添加了barchartcustomizer.jar。

我的代码: -

package barchartcustomizer;

import net.sf.jasperreports.engine.JRAbstractChartCustomizer;
import net.sf.jasperreports.engine.JRChart;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.BarRenderer;


public class BarChartCustomizer extends JRAbstractChartCustomizer {

public void customize(JFreeChart chart, JRChart jasperChart) {

CategoryPlot categoryPlot = chart.getCategoryPlot();
BarRenderer renderer = (BarRenderer) categoryPlot.getRenderer();

//Spaces between bars
renderer.setItemMargin(0.03);       
}
}

但是当我点击预览时收到此错误: -

错误填充打印...无法创建图表定制实例。 设置文件解析器...添加了文件解析器... net.sf.jasperreports.engine.JRRuntimeException:无法创建图表自定义程序实例。 at net.sf.jasperreports.engine.fill.JRFillChart。(JRFillChart.java:299)at net.sf.jasperreports.engine.fill.JRFillObjectFactory.visitChart(JRFillObjectFactory.java:702)at net.sf.jasperreports.engine。 base.JRBaseChart.visit(JRBaseChart.java:639)at net.sf.jasperreports.engine.JRAbstractObjectFactory.getVisitResult(JRAbstractObjectFactory.java:89)at net.sf.jasperreports.engine.fill.JRFillElementGroup。(JRFillElementGroup.java:83 )net.sf.jasperreports.engine.fill.JRFillElementContainer。(JRFillElementContainer.java:90)at net.sf.jasperreports.engine.fill.JRFillBand。(JRFillBand.java:92)at net.sf.jasperreports.engine。 fill.JRFillObjectFactory.getBand(JRFillObjectFactory.java:505)在net.sf.jasperreports.engine.fill.JRFillSection。(JRFillSection.java:74)在net.sf.jasperreports.engine.fill.JRFillObjectFactory.getSection(JRFillObjectFactory.java :481)在net.sf.jasperreports.engine.fi ll.JRFillGroup(JRFillGroup.java:81)在net.sf.jasperreports.engine.fill.JRFillObjectFactory.getGroup(JRFillObjectFactory.java:457)在net.sf.jasperreports.engine.fill.JRFillVariable(JRFillVariable.java。: 84)在net.sf.jasperreports.engine.fill.JRFillObjectFactory.getVariable(JRFillObjectFactory.java:437)在net.sf.jasperreports.engine.fill.JRFillDataset.addVariable(JRFillDataset.java:335)在net.sf.jasperreports .engine.fill.JRFillDataset.setVariables(JRFillDataset.java:325)在net.sf.jasperreports.engine.fill.JRFillDataset。(JRFillDataset.java:279)在net.sf.jasperreports.engine.fill.JRFillObjectFactory.getDataset( JRFillObjectFactory.java:1338)net.sf.jasperreports.engine.fill.JRBaseFiller。(JRBaseFiller.java:397)net.sf.jasperreports.engine.fill.JRVerticalFiller。(JRVerticalFiller.java:88)at net.sf .jasperreports.engine.fill.JRVerticalFiller。(JRVerticalFiller.java:103) at net.sf.jasperreports.engine.fill.JRVerticalFiller。(JRVerticalFiller.java:61)at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:153)at net.sf.jasperreports.engine。 fill.JRFiller.fill(JRFiller.java:55)at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446)at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:276) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:745)at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:891)org.openide.util.RequestProcessor $ Task .run(RequestProcessor.java:572)atg.openide.util.RequestProcessor $ Processor.run(RequestProcessor.java:997)引起:java.lang.ClassNotFoundException:java中的com.xyz.bar.chart.customizer包。 java.net.URLClas中的net.URLClassLoader $ 1.run(URLClassLoader.java:366) sLoader $ 1.run(URLClassLoader.java:355)在java.security.AccessController.doPrivileged(本机方法)在java.net.URLClassLoader.findClass(URLClassLoader.java:354)在java.lang.ClassLoader.loadClass(ClassLoader.java :423)在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)at java.lang.ClassLoader.loadClass(ClassLoader.java:356)org.netbeans.ProxyClassLoader.loadClass(ProxyClassLoader.java:252) at java.lang.ClassLoader.loadClass(ClassLoader.java:356)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:264)at net.sf.jasperreports.engine .util.JRClassLoader.loadClassForRealName(JRClassLoader.java:175)在net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:115)在net.sf.jasperreports.engine.fill.JRFillChart(JRFillChart。 java:296)... 29更多

如何解决此错误,任何建议都对我有用。

1 个答案:

答案 0 :(得分:0)

请参阅以下网址:

https://mdahlman.wordpress.com/tag/pie-chart/

您可以在上面链接的“样本报告和图表定制器”部分下载随时可用的定制器jar。

下载jar,在ireport类路径中注册jar,并在ireport的chart customizer属性中添加包名。

我已经测试过并且工作正常。

干杯,

Srikanth Kattam