由于JFreeChart组件的版本、操作平台、JDK的设置等因素,在使用JFreeChart组件时可能会出现中文乱码的现象。遇到此问题时,可通过设置文字的字体来解决问题。在此提供以下两种解决此问题的方法。

一、设置主题的样式(强烈推荐)

在制图前,创建主题样式并制定样式中的字体,通过ChartFactory的setChartTheme()方法设置主题样式。

//创建主题样式
StandardChartTheme standardChartTheme=new StandardChartTheme("CN");
//设置标题字体
standardChartTheme.setExtraLargeFont(new Font("隶书",Font.BOLD,20));
//设置图例的字体
standardChartTheme.setRegularFont(new Font("宋书",Font.PLAIN,15));
//设置轴向的字体
standardChartTheme.setLargeFont(new Font("宋书",Font.PLAIN,15));
//应用主题样式
ChartFactory.setChartTheme(standardChartTheme);

例如:

DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("香蕉", 56.4);
dataset.setValue("苹果", 63.5);
dataset.setValue("橘子", 58.4);
dataset.setValue("西瓜", 76.3);
// 创建主题样式
StandardChartTheme standardChartTheme = new StandardChartTheme("CN");
// 设置标题字体
standardChartTheme.setExtraLargeFont(new Font("宋书", Font.BOLD, 20));
// 设置图例的字体
standardChartTheme.setRegularFont(new Font("宋书", Font.PLAIN, 15));
// 设置轴向的字体
standardChartTheme.setLargeFont(new Font("宋书", Font.PLAIN, 15));
// 应用主题样式
ChartFactory.setChartTheme(standardChartTheme);
JFreeChart chart = ChartFactory.createPieChart("测试PieChart",
dataset, true, true, false);
ChartUtilities.saveChartAsJPEG(new File(filePath), chart, 400, 300);

二、制定乱码文字的字体

使用JFreeChart绘制图表的时候,如果使用默认的字体会导致图标中的汉字显示为乱码。解决方法如下:

JFreeChart是用户使用该库提供的各类图标的统一接口,JFreeChart主要由三个部分构成:title(标题),legend(图释),plot(图表主体)。三个部分设置字体的方法分别如下:

1.Title

TextTitle textTitle = freeChart.getTitle();
textTitle.setFont(new Font("宋体",Font.BOLD,20));

2.Legent

LegendTitle legend = freeChart.getLegend();
if (legend!=null) {
legend.setItemFont(new Font("宋体", Font.BOLD, 20));
}

3.Plot

对于不同类型的图表对应Plot的不同的实现类,设置字体的方法也不完全相同。

对于使用CategoryPlot的图表(如柱状图):

CategoryPlot plot = (CategoryPlot)freeChart.getPlot();
CategoryAxis domainAxis = plot.getDomainAxis();//(柱状图的x轴)
domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,20));//设置x轴坐标上的字体
domainAxis.setLabelFont(new Font("宋体",Font.BOLD,20));//设置x轴上的标题的字体
ValueAxis valueAxis = plot.getRangeAxis();//(柱状图的y轴)
valueAxis.setTickLabelFont(new Font("宋体",Font.BOLD,20));//设置y轴坐标上的字体
valueAxis.setLabelFont(new Font("宋体",Font.BOLD,20));//设置y轴坐标上的标题的字体
CategoryPlot plot = (CategoryPlot)freeChart.getPlot();
CategoryAxis domainAxis = plot.getDomainAxis();//(柱状图的x轴)
domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,20));//设置x轴坐标上的字体
domainAxis.setLabelFont(new Font("宋体",Font.BOLD,20));//设置x轴上的标题的字体
ValueAxis valueAxis = plot.getRangeAxis();//(柱状图的y轴)
valueAxis.setTickLabelFont(new Font("宋体",Font.BOLD,20));//设置y轴坐标上的字体
valueAxis.setLabelFont(new Font("宋体",Font.BOLD,20));//设置y轴坐标上的标题的字体

对于使用PiePlot的图标(如饼状图):

//三个部分设置字体的方法分别如下:
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.BOLD, 20));
LegendTitle legend = chart.getLegend();
if (legend != null) {
legend.setItemFont(new Font("宋体", Font.BOLD, 20));
}
PiePlot pie = (PiePlot) chart.getPlot();
pie.setLabelFont(new Font("宋体", Font.BOLD, 12));
pie.setNoDataMessage("No data available");
pie.setCircular(true);
pie.setLabelGap(0.01D);// 间距
转载自:  http://www.cnblogs.com/jtmjx/archive/2013/04/29/3050846.html

JFreeChart中文乱码解决方案相关推荐

  1. iis 站点中文乱码 解决方案

    iis 站点中文乱码 解决方案 参考文章: (1)iis 站点中文乱码 解决方案 (2)https://www.cnblogs.com/zhaokunbokeyuan256/p/10001726.ht ...

  2. Spring RestTemplate中文乱码解决方案

    Spring RestTemplate中文乱码解决方案 参考文章: (1)Spring RestTemplate中文乱码解决方案 (2)https://www.cnblogs.com/accesski ...

  3. python写入csv文件中文乱码解决方案

    python写入csv文件中文乱码解决方案 参考文章: (1)python写入csv文件中文乱码解决方案 (2)https://www.cnblogs.com/vsivn/p/6115537.html ...

  4. Windows 10 powershell 中文乱码解决方案

    Windows 10 powershell 中文乱码解决方案 参考文章: (1)Windows 10 powershell 中文乱码解决方案 (2)https://www.cnblogs.com/we ...

  5. Spring MVC POST中文乱码解决方案

    2019独角兽企业重金招聘Python工程师标准>>> POST中文乱码解决方案 1.自己编写一个filter,来实现编码,代码如下: 1 public class Characte ...

  6. POST中文乱码解决方案

    2019独角兽企业重金招聘Python工程师标准>>> POST中文乱码解决方案 ? Spring Web MVC提供了Filter用于解决POST方式造成的中文乱码问题,具体配置 ...

  7. PHP——PHP读取MySQL数据库中文乱码解决方案

    问题描述 PHP读取MySQL数据库中文乱码 解决方案 静态页面  <head> <metahttp-equiv="Content-Type"content=&q ...

  8. mysql中文乱码解决方案_Mysql中文乱码解决方案

    Mysql中文乱码解决方案 时间:2017-07-11     来源:华清远见JAVA学院 中文乱码问题一直是我们编程过程中比较常见又让人头疼的问题,但是只要按照标准进行配置,就能很好的避免出现中文乱 ...

  9. php乱码解决方案,PHP中文乱码解决方案

    PHP中文乱码解决方案 前言 PHP中文乱码是PHP开发中的常见问题之一,中文乱码现像有时发生在网页本身,有些产生在于MYSQL交互的过程中,有时与操作系统有关,下面进行总结. 一. PHP网页的编码 ...

最新文章

  1. mysql read timed out_java.sql.SQLException: Socket read timed out
  2. react 和 lodash 完美结合命令
  3. mysql libs 5.1.71_用python创建数据库监控平台(1)安装MySQL5.7
  4. mini2440-Openwrt启动信息
  5. 到 Google 面试去!开发者必读的避坑指南
  6. Kylin 对维度表的的要求
  7. python3档案管理程序源码_php人事档案管理系统,源码免费分享
  8. VS2013 MFC + OpenCV3.0 打开图片
  9. Unity3D 协程 浅谈
  10. Eclipse 插件开发 资料贡献
  11. 修改文件 火车票买下铺_火车票怎么买到下铺
  12. map转list对象方法,通过stream或者iterator.key集合转list,values集合转list
  13. 获取对象上的属性(三种方法)
  14. PS打造唯美冷色调照片
  15. CH340g的使用说明
  16. [计算机通信网络]Packet tracer中laptop连接无线路由器
  17. 【ROS基础】ROS_c++ 语法记录
  18. 小米路由器R3原厂BootLoader和eeprom备份
  19. 香港中文大学推荐的书单~
  20. .NET的前景如何?你的问题答案都在这里-2017

热门文章

  1. python修改镜像源_Python镜像源集合——镜像源更改方法
  2. JavaWeb 实现密码修改的案例
  3. 【张宇2021考研】数学三(样卷)扫描版
  4. 我市智慧城市建设迈入快车道
  5. tiny4412 基础(五)时钟体系(续)
  6. 【技术分享】李文哲:基于图数据库的大数据应用
  7. 短视频如何制作?教程分享,只需要四个步骤
  8. 如何快速查找替换CAD图纸中相同的文字?
  9. 【企业微信】获取token 发送应用消息
  10. html5怎么把图片垂直居中,css如何让img垂直居中?