JFreeChart默认字体有"Arial","Dialog", "Dialog", "SansSerif", "Tahoma"
而需要用到是宋体等中文字体时,JVM找不到相关字体文件,所以会显示乱码,解决方法如下。
第一步:
将Linux系统的字体目录作为JDK下面的一个字体目录连接。
ln -s $FONTS_PATH/FONT_DIR$JAVA_HOME/jre/lib/fonts/fallback
第二步:
在代码中(柱状图)
- Font font = new Font("宋体", Font.BOLD, 22);
- jfreechart.getTitle().setFont(font); // 标题
- font = new Font("宋体", Font.PLAIN, 14);
- jfreechart.getLegend().setItemFont(font); // 列类型的文字字体
- font = new Font("宋体", Font.PLAIN, 16);
- categoryaxis.setLabelFont(font); // x轴名称的字体
- categoryplot.getRangeAxis().setLabelFont(font); // y轴名称的字体
- CategoryPlot categoryplot = jfreechart.getCategoryPlot();
- CategoryAxis categoryaxis = categoryplot.getDomainAxis();
- font = new Font("宋体", Font.PLAIN, 12);
- categoryaxis.setTickLabelFont(font); // x轴上的刻度名称字体
- categoryplot.getRangeAxis().setTickLabelFont(font); // y轴上的刻度名称字体
- font = new Font("宋体", Font.PLAIN, 18);
- categoryplot.setNoDataMessage(emptyMsg);
- categoryplot.setNoDataMessageFont(font); // 没有数据时的提示
饼图
- PiePlot plot = (PiePlot)freeChart.getPlot();
- plot.setLabelFont(new Font("宋体",Font.BOLD,15));
参考博客:http://ferreousbox.iteye.com/blog/395176
http://developer.51cto.com/art/201112/308902.htm