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,这很有指导意义就其本身而言。