前段时间因为项目需要,做了几个统计图,但因为以前没有做过,所以遇到了一些乱码问题,过了很久才得以解决,与大家分享一下.
JFreeChart形成的图片上的汉字乱码原因可能为——如下:
1.servlet乱码问题见前一贴
http://www.cn-java.com/www1/index.php?uid-565002-action-viewspace-itemid-10577
或
http://blog.csdn.net/zhaotao_king/archive/2008/12/24/3596060.aspx
2.在形成图片的过程中一些文字设置问题,如下
在形成柱形图、曲线图等汉字乱码(数据库返回或直接写在方法里面的)可能是如下原因:
/*
*
*
* 解决JFREECHART的中文显示问题
下面代码中的几个变量:chart plot domainAxis rAxis所属对象如下
JFreeChart chart;
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis domainAxis = plot.getDomainAxis();
ValueAxis rAxis = plot.getRangeAxis();
*
*
* */
/*----------设置消除字体的锯齿渲染(解决中文问题)--------------*/
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
/*----------设置标题字体--------------------------*/
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("黑体", Font.PLAIN, 20));
/*------设置X轴坐标上的文字-----------*/
domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
/*------设置X轴的标题文字------------*/
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
/*------设置Y轴坐标上的文字-----------*/
rAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
/*------设置Y轴的标题文字------------*/
rAxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));
chart.getLegend().setItemFont(new Font("宋体",Font.PLAIN,12));/*------这句代码解决了底部汉字乱码的问题-----------*/
/*---------设置柱状体上的显示的字体---------*/
renderer.setItemLabelGenerator(new LabelGenerator(0.0));
renderer.setItemLabelFont(new Font("宋体", Font.PLAIN, 12));
renderer.setItemLabelsVisible(true);
我就是因为第2种原因,致使乱码问题存在了很久才解决,伤心~~
为了不让别人遇到同样问题一样伤心,分享一下,哈哈~~~~