现在的位置: 首页 > 综合 > 正文

关于JFreeChart形成图片的汉字乱码问题

2013年07月09日 ⁄ 综合 ⁄ 共 1788字 ⁄ 字号 评论关闭

前段时间因为项目需要,做了几个统计图,但因为以前没有做过,所以遇到了一些乱码问题,过了很久才得以解决,与大家分享一下.

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种原因,致使乱码问题存在了很久才解决,伤心~~

为了不让别人遇到同样问题一样伤心,分享一下,哈哈~~~~

抱歉!评论已关闭.