读书人

JFreeChart乱码解决办法

发布时间: 2012-11-14 10:12:18 作者: rapoo

JFreeChart乱码解决方法

源代码如下:

 package test;import java.awt.Font;import java.io.FileOutputStream;import java.io.IOException;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartUtilities;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.axis.NumberAxis;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.title.TextTitle;import org.jfree.data.category.CategoryDataset;import org.jfree.data.category.DefaultCategoryDataset;public class Test{public static void main(String[] args) throws IOException{CategoryDataset dataset = getDataSet();JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", // 图表标题"水果", // 目录轴的显示标签"产量", // 数值轴的显示标签dataset, // 数据集PlotOrientation.VERTICAL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是false)false, // 是否生成工具false // 是否生成URL链接);FileOutputStream fos_jpg = null;try {fos_jpg = new FileOutputStream("D:\\fruit.jpg");ChartUtilities.writeChartAsJPEG(fos_jpg,1,chart,400,300,null);} finally {try {fos_jpg.close();} catch (Exception e) {}}}/** * 获取一个演示用的简单数据集对象 * @return */private static CategoryDataset getDataSet() {DefaultCategoryDataset dataset = new DefaultCategoryDataset();dataset.addValue(100, "成都", "苹果");dataset.addValue(200, "成都", "梨子");dataset.addValue(300, "成都", "葡萄");dataset.addValue(400, "成都", "香蕉");dataset.addValue(500, "西昌", "苹果");dataset.addValue(200, "西昌", "梨子");dataset.addValue(300, "西昌", "葡萄");dataset.addValue(400, "西昌", "香蕉");return dataset;}/** * 获取一个演示用的组合数据集对象 * @return */private static CategoryDataset getDataSet2() {DefaultCategoryDataset dataset = new DefaultCategoryDataset();dataset.addValue(100, "北京", "苹果");dataset.addValue(100, "上海", "苹果");dataset.addValue(100, "广州", "苹果");dataset.addValue(200, "北京", "梨子");dataset.addValue(200, "上海", "梨子");dataset.addValue(200, "广州", "梨子");dataset.addValue(300, "北京", "葡萄");dataset.addValue(300, "上海", "葡萄");dataset.addValue(300, "广州", "葡萄");dataset.addValue(400, "北京", "香蕉");dataset.addValue(400, "上海", "香蕉");dataset.addValue(400, "广州", "香蕉");dataset.addValue(500, "北京", "荔枝");dataset.addValue(500, "上海", "荔枝");dataset.addValue(500, "广州", "荔枝");return dataset;}}


增加如下的代码,解决汉字乱码问题:
CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();  CategoryAxis domainAxis = categoryplot.getDomainAxis();  TextTitle textTitle = chart.getTitle(); textTitle.setFont(new Font("黑体", Font.PLAIN, 20));      domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));     domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));    numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));   numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));      chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));



标题乱码
   chart.getTitle().setFont(new Font("宋体", Font.BOLD,12));


其他

   1. CategoryAxis domainAxis = plot.getDomainAxis();     2.   3. // NumberAxis  valueAxis=(NumberAxis) plot.getRangeAxis();    4. //有人说这个是水平方向设置的 方法。   5. ValueAxis numberaxis = plot.getRangeAxis();   6.      7. /*------设置X轴坐标上的文字-----------*/     8. domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));      9.     10. /*------设置X轴的标题文字------------*/    11. domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));     12.     13. /*------设置Y轴坐标上的文字-----------*/    14. numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));     15.     16. /*------设置Y轴的标题文字------------*/    17. numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));     18.     19. /*------这句代码解决了底部汉字乱码的问题-----------*/    20. jfreechart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));  

1 楼 tinguo002 2010-04-28 经过综合参考
最后还是根据你的 那些代码把乱码问题解决了

图片上有6个部份的 字体需要设置 分别为:
图片的标题 TextTitle textTitle
图片的底部 JFreeChart chart.getLegend()
x轴二部份
y轴二部份 x、y轴的你那里都写的很好了 /*..*/的那部份 2 楼 tinguo002 2010-04-28 上面的是柱状图的 乱码解决

还有饼图的的乱码解决是有区别的!
饼图:
图片的标题、图片的底部、与上面相同。
x、y轴部份统一用 plot.setLabelFont();
plot来源为下面代码:
plot=(PiePlot3D)chart.getPlot();
JfreeChart chart;

读书人网 >软件架构设计

热点推荐