重新编译 jfreechart 1.0.13,支持自定义字体,修正中文字体乱码。

目标:解决1.0.13中文兼容性问题
原因分析:见其他同学的分析http://hi.baidu.com/kaisep/blog/item/a979fffef6762d3a5c60088f.html
解决方案:
一、直接替换法:
    在源代码中将"SansSerif"替换为"宋体", 将"Tahoma"替换为"黑体",重新打包;
二、间接替换:
    方法一是用硬编码的方式,这个jfreechart以后就只能用于中文了,违背了Java通用性的要求;我现在是将方法一经过延伸。
    1、找到源代码包org.jfree.chart下的资源文件LocalizationBundle.properties,用资源编辑器打开,添加两个资源
    DEFAULT_TITLE_FONT、StandardChartTheme,对应中文的值分别指定为"宋体"、"黑体";
    2、修改源文件org.jfree.chart.JFreeChart,添加代码:
   
    public static final ResourceBundle localizationResources=ChartPanel.localizationResources;
    查找所有的Java文件的"SansSerif",替换为JFreeChart.localizationResources.getString("DEFAULT_TITLE_FONT")
    类似:    public static final Font DEFAULT_TITLE_FONT
            = new Font(JFreeChart.localizationResources.getString("DEFAULT_TITLE_FONT"), Font.BOLD, 18);
    "Tahoma"的处理也类似。
    (在我的xp机器上只需要处理Tahoma字体即可,无需处理SansSerif)
    3、重新编译保存;
    4、如需修改字体直接用WinRAR打开对应的LocalizationBundle.properties修改即可。

    编译好的jar见附件(jdk 6u22下编译的)。

你可能感兴趣的:(jdk,html,jfreechart,XP,Blog)