项目中图表制作时使用到了JfreeChart,最近在升级版本时遭遇到了中文乱码问题,当然这并非传说中的JSP编码造成的,网上baidu了半天,徒劳无果,不得已只能自己分析解决。
过程甚为艰难,在此不予赘述,仅记下问题根源及解决方案,以飨同“僚”。
根源:从1.0.11版本起,jfreechart引入了一个ChartTheme(图表主题)的概念,并提供了标准的实现(org.jfree.chart.StandardChartTheme),标准图表主题中定义了制作图表时所使用的四种字体(超大、大、常规、小)。
public StandardChartTheme(String name) {
if (name == null) {
throw new IllegalArgumentException("Null 'name' argument.");
}
this.name = name;
this.extraLargeFont = new Font("Tahoma", Font.BOLD, 20);
this.largeFont = new Font("Tahoma", Font.BOLD, 14);
this.regularFont = new Font("Tahoma", Font.PLAIN, 12);
this.smallFont = new Font("Tahoma", Font.PLAIN, 10);
……
}
中文乱码正是由于Tahoma这种字体不能正常解码造成的。
解决方案:在系统启动时(在使用jfreechart之前)将标准图表主题中的字体进行覆盖设置即可。我的一种思路是定义一个Java Bean(系统开发使用到了Spring)并它实现org.springframework.beans.factory.InitializingBean接口,然后在afterPropertiesSet方法中进行jfreechart的配置,只要随后在需要时把它当做一个普通的bean配置到spting的配置文件中就可以了,源码如下:
public class JFreeChartChineseEnvConfiguration implements InitializingBean{
public void afterPropertiesSet() throws Exception {
ChartTheme chartTheme=ChartFactory.getChartTheme();
if(chartTheme instanceof StandardChartTheme){
StandardChartTheme sct=(StandardChartTheme)chartTheme;
Font extraLarge=sct.getExtraLargeFont();
if(extraLarge!=null) sct.setExtraLargeFont(new Font("宋体",extraLarge.getStyle(),extraLarge.getSize()));
Font large=sct.getLargeFont();
if(large!=null) sct.setLargeFont(new Font("宋体",large.getStyle(),large.getSize()));
Font regular=sct.getRegularFont();
if(regular!=null) sct.setRegularFont(new Font("宋体",regular.getStyle(),regular.getSize()));
Font small=sct.getSmallFont();
if(small!=null) sct.setSmallFont(new Font("宋体",small.getStyle(),small.getSize()));
}
}
}
分享到:
相关推荐
jfreechart-1.0.10.jar 对解决乱码有用
JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的2D和3D图表,如柱状图、折线图和...在你的项目中,可以参考提供的文件“jfreechart”来查看具体的实现方式,这将有助于你更好地理解和应用这些解决方案。
**JFreeChart 概述** JFreeChart 是一个开源的Java库,用于生成高质量的图表。这个库在Java开发社区中被广泛使用,因为它能够帮助开发者轻松地...无论是简单还是复杂的数据展示,JFreeChart 都能提供合适的解决方案。
综上所述,`JFreeChart-1.0.10`与`JCommon-1.0.13`这两个库共同构成了一个强大的Java图表生成工具,能够帮助开发者轻松创建出专业且功能丰富的图表,无论是在桌面应用、Web应用还是移动应用中,都能发挥出其强大的...
**JFreeChart 1.0.10:Java Swing与Web报表开发的关键组件** JFreeChart是一个开源的Java库,专为创建高质量的图表而设计,适用于Java Swing应用程序以及Web应用。这个`jfreechart-1.0.10.jar`包是JFreeChart项目的...
这个压缩包“jfreechart-1.0.13”包含了JFreeChart的完整版本,让我们一起深入探讨其核心功能和使用方法。 JFreeChart是Java中最优秀的绘图工具之一,它支持多种图表类型,包括折线图、柱状图、饼图、散点图、甘特...
jfreechart-1.0.13 jfreechart-1.0.13 jfreechart-1.0.13 jfreechart-1.0.13 jfreechart-1.0.13 jfreechart-1.0.13
总结来说,JFreeChart 1.0.10的演示项目为开发者提供了一个丰富的学习资源,通过探索这个演示,我们可以了解到如何利用JFreeChart创建各种复杂的图表,包括设置数据源、定制图表样式、添加交互功能等。无论你是初学...
JFreeChart 目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求
jfreechart(包jfreechart(包含jfreechart.jar和jcommon-1.0.13.jar) jfreechart(包含jfreechart.jar和jcommon-1.0.13.jar) jfreechart(包含jfreechart.jar和jcommon-1.0.13.jar) jfreechart(包含jfreechart.jar和...
"jfreechart-1.0.10 javadoc"是JFreeChart库1.0.10版本的API文档,包含了详细的类、方法和其他编程元素的说明,对于理解和使用JFreeChart进行开发至关重要。 JFreeChart支持多种类型的图表,如折线图、饼图、柱状图...
《JFreeChart 1.0.10:创建专业图表的必备工具》 JFreeChart 是一个开源的 Java 库,专为生成高质量的图表而设计。它在 Java 平台上广泛应用于各种项目,包括报告、数据分析、Web 应用以及桌面应用等,提供了丰富的...
JFreeChart-1.0.13原文件含jar包。 1、JFreeChart生成图片路径教程 2、JFreeChart使用教程(含下载安装,超详细) 3、JFreeChart使用详细教程 ...5、JFreeChart乱码解决方法 等等 包括许多优秀案例
- **添加依赖**:在Java项目中,首先需要将jfreechart-1.0.10.jar文件添加到类路径中,或者在Maven/Gradle项目中添加对应的依赖配置。 - **创建图表**:通过`ChartFactory`类可以快速创建各种类型的图表,例如`...
《JFreeChart 1.0.10 Demo 源码解析与应用探索》 JFreeChart 是一个广泛使用的开源Java库,它提供了一个强大的工具集,用于创建各种类型的图表,包括柱状图、饼图、线图、散点图等。在Java应用程序中,无论是桌面...
标题 "jfreechart部署在Linux服务器上生成图片乱码的解决方案" 涉及到的主要知识点是关于Java图形库JFreeChart在Linux环境中的使用,特别是解决中文字符乱码的问题。JFreeChart是一个广泛使用的开源Java库,它允许...
刚刚找jfreechart 1.0版本的jar包,马上传上来,希望能对大家的学习有用。