图表的类自定义程序出错

时间:2011-08-25 12:17:11

标签: jasper-reports ireport jfreechart

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

代码:

 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 

我的参考是:

http://files.blogjava.net/hao446tian/jfreechart-1.0.1-US_developer_guide.pdf

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

enter image description here

1 个答案:

答案 0 :(得分:2)

首先,您的失败代码似乎是您的示例与您使用的库之间的版本不匹配。 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);
}