Jasper reports 图表的类自定义程序出错

Jasper reports 图表的类自定义程序出错,jasper-reports,ireport,jfreechart,Jasper Reports,Ireport,Jfreechart,我想定制我的图表,所以我想使用一个类定制器, 我使用了下面的代码将分类标签更改为垂直,但我不知道为什么它会生成错误 守则: public void customize(JFreeChart jfc, JRChart jrc) { CategoryPlot myPlot = jfc.getCategoryPlot(); HorizontalCategoryAxis axis = (HorizontalCategoryAxis)myPlot.getDomainAxis(); axis.

我想定制我的图表,所以我想使用一个类定制器, 我使用了下面的代码将分类标签更改为垂直,但我不知道为什么它会生成错误

守则:

 public void customize(JFreeChart jfc, JRChart jrc) {
  CategoryPlot myPlot = jfc.getCategoryPlot();
  HorizontalCategoryAxis axis = (HorizontalCategoryAxis)myPlot.getDomainAxis();
  axis.setVerticalCategoryLabels(true);
 } 
错误是:

 cannot find symbol : Class HorizontalCategoryAxis
我也尝试过:

    CategoryItemRenderer renderer = (CategoryItemRenderer) plot.getRenderer();
    CategoryItemLabelGenerator generator = new   StandardCategoryItemLabelGenerator("{2}", new DecimalFormat("0.00"));
    renderer.setLabelGenerator(generator);
    renderer.setItemLabelsVisible(true);
    XYItemRenderer renderer2 = (XYItemRenderer) plot.getRenderer();
    XYItemLabelGenerator generator2 = new StandardXYItemLabelGenerator("{2}", new  DecimalFormat("0.00"));
    renderer.setLabelGenerator(generator);
以及错误:

找不到行的符号

renderer.setLabelGenerator(generator);

没有合适的构造函数

XYItemLabelGenerator generator2 
我的推荐信是:

更新 我仍然看不到categorieExpression(在Y轴上):(((


首先,失败的代码似乎是示例与所用库之间的版本不匹配。已删除
setLabelGenerator
方法,并将其替换为
setBaseItemLabelGenerator

CategoryPlot plot = yourPlot;
CategoryItemRenderer renderer = (CategoryItemRenderer) plot.getRenderer();
CategoryItemLabelGenerator generator = new   StandardCategoryItemLabelGenerator("{2}", new DecimalFormat("0.00"));
renderer.setBaseItemLabelGenerator(generator);
renderer.setBaseItemLabelsVisible(true);
XYItemRenderer renderer2 = (XYItemRenderer) plot.getRenderer();
XYItemLabelGenerator generator2 = new StandardXYItemLabelGenerator("{2}", 
        new  DecimalFormat("0.00"),
        new  DecimalFormat("0.00"));
renderer.setBaseItemLabelGenerator(generator);
在我的示例中可以看到,
StandardXYItemLabelGenerator
采用两种格式,一种用于x值,另一种用于y值

至于使用
HorizontalCategoryAxis
,它的命运与
setLabelGenerator
一样。假设您想要一个带有
CategoryAxis
且标签垂直而非水平的垂直图,您可以使用
setLabelAngle
来实现所需的效果:

public void customize(JFreeChart jfc, JRChart jrc) {
    CategoryPlot myPlot = jfc.getCategoryPlot();
    CategoryAxis axis = myPlot.getDomainAxis();
    axis.setLabelAngle(-Math.PI / 2);
}

错误是,
HorizontalCategoryAxis
似乎不在类路径中。请确保类路径中有所有适当的jar。可能是@Jes的副本,我已将JfreChart.jar添加到我的项目中,我是否应该添加其他内容?我相信
HorizontalCategoryAxis
已被弃用,或在某个时候被删除。您正在运行哪个版本的JFreeChart?您的开发人员手册建议您应该运行1.0.1。请检查我的答案以寻求可能的解决方案。我已经尝试了您的答案,错误消失并生成了一份报告,我将用报告更新我的帖子。仍然很混乱!似乎标签角度没有设置。您确定类别a吗xis未在其他位置设置?请尝试在
setLabelAngle
的主体中设置断点。您好,是的,您是对的:)最后一个问题是,是否可以将同一类custoiser用于条形图3D?到目前为止,该代码分别适用于
BarRenderer
CategoryPlot
barrender3d
扩展了
BarRenderer
,因此您应该能够只切换渲染器。+1用于说明不断发展的API,这很有指导意义就其本身而言。