JFreeChart中文乱码解决方案
由于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);// 间距
JFreeChart中文乱码解决方案相关推荐
- iis 站点中文乱码 解决方案
iis 站点中文乱码 解决方案 参考文章: (1)iis 站点中文乱码 解决方案 (2)https://www.cnblogs.com/zhaokunbokeyuan256/p/10001726.ht ...
- Spring RestTemplate中文乱码解决方案
Spring RestTemplate中文乱码解决方案 参考文章: (1)Spring RestTemplate中文乱码解决方案 (2)https://www.cnblogs.com/accesski ...
- python写入csv文件中文乱码解决方案
python写入csv文件中文乱码解决方案 参考文章: (1)python写入csv文件中文乱码解决方案 (2)https://www.cnblogs.com/vsivn/p/6115537.html ...
- Windows 10 powershell 中文乱码解决方案
Windows 10 powershell 中文乱码解决方案 参考文章: (1)Windows 10 powershell 中文乱码解决方案 (2)https://www.cnblogs.com/we ...
- Spring MVC POST中文乱码解决方案
2019独角兽企业重金招聘Python工程师标准>>> POST中文乱码解决方案 1.自己编写一个filter,来实现编码,代码如下: 1 public class Characte ...
- POST中文乱码解决方案
2019独角兽企业重金招聘Python工程师标准>>> POST中文乱码解决方案 ? Spring Web MVC提供了Filter用于解决POST方式造成的中文乱码问题,具体配置 ...
- PHP——PHP读取MySQL数据库中文乱码解决方案
问题描述 PHP读取MySQL数据库中文乱码 解决方案 静态页面 <head> <metahttp-equiv="Content-Type"content=&q ...
- mysql中文乱码解决方案_Mysql中文乱码解决方案
Mysql中文乱码解决方案 时间:2017-07-11 来源:华清远见JAVA学院 中文乱码问题一直是我们编程过程中比较常见又让人头疼的问题,但是只要按照标准进行配置,就能很好的避免出现中文乱 ...
- php乱码解决方案,PHP中文乱码解决方案
PHP中文乱码解决方案 前言 PHP中文乱码是PHP开发中的常见问题之一,中文乱码现像有时发生在网页本身,有些产生在于MYSQL交互的过程中,有时与操作系统有关,下面进行总结. 一. PHP网页的编码 ...
最新文章
- mysql read timed out_java.sql.SQLException: Socket read timed out
- react 和 lodash 完美结合命令
- mysql libs 5.1.71_用python创建数据库监控平台(1)安装MySQL5.7
- mini2440-Openwrt启动信息
- 到 Google 面试去!开发者必读的避坑指南
- Kylin 对维度表的的要求
- python3档案管理程序源码_php人事档案管理系统,源码免费分享
- VS2013 MFC + OpenCV3.0 打开图片
- Unity3D 协程 浅谈
- Eclipse 插件开发 资料贡献
- 修改文件 火车票买下铺_火车票怎么买到下铺
- map转list对象方法,通过stream或者iterator.key集合转list,values集合转list
- 获取对象上的属性(三种方法)
- PS打造唯美冷色调照片
- CH340g的使用说明
- [计算机通信网络]Packet tracer中laptop连接无线路由器
- 【ROS基础】ROS_c++ 语法记录
- 小米路由器R3原厂BootLoader和eeprom备份
- 香港中文大学推荐的书单~
- .NET的前景如何?你的问题答案都在这里-2017