jfreechar解决中文乱码问题?

superbingo 2009-04-11 09:21:27
我用是1.11版本的jar,图形如下:

但是就剩下最底下的乱码啦。请问怎么设置成中文,或者隐藏也可以!
我的Java代码如下:

package com.gb.business.test.model;

import java.awt.Color;
import java.awt.Font;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpSession;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
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.axis.NumberTickUnit;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;


public class BarChart2D {

private static CategoryDataset createDataset()
{
String s = "学生人数";

//创建横坐标的显示内容
String s1 = "北京";
String s2 = "天津";
String s3 = "河北";
String s4 = "安徽";
String s5 = "辽宁";
String s6 = "河南";
String s7 = "山东";

//构造生成图片所需要的数据集合
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(2000, s, s1);
defaultcategorydataset.addValue(600, s, s2);
defaultcategorydataset.addValue(1200, s, s3);
defaultcategorydataset.addValue(579, s, s4);
defaultcategorydataset.addValue(347, s, s5);
defaultcategorydataset.addValue(468, s, s6);
defaultcategorydataset.addValue(2000, s, s7);
return defaultcategorydataset;
}
//创建JFreeChart对象
private static JFreeChart createChart(CategoryDataset categorydataset)
{
JFreeChart jfreechart = ChartFactory.createBarChart("学校生源统计柱状图", "省份", "数量", categorydataset, PlotOrientation.VERTICAL, true, false, false);
jfreechart.setBackgroundPaint(Color.white);

jfreechart.getTitle().setFont(new Font("黑体", Font.BOLD, 20));
CategoryPlot plot = jfreechart.getCategoryPlot();
plot.setBackgroundPaint(Color.white);
plot.setDomainGridlinePaint(Color.white);
plot.setDomainGridlinesVisible(true);
plot.setRangeGridlinePaint(Color.blue);

CategoryAxis domainAxis = plot.getDomainAxis();
//获取纵坐标
NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis();
//将纵坐标间距设置为100
numberaxis.setTickUnit(new NumberTickUnit(50));
numberaxis.setLabelFont(new Font("SimSun",Font.PLAIN,13));
numberaxis.setTickLabelFont(new Font("SimSun",Font.PLAIN,12));
//设置横坐标的标题字体和大小
domainAxis.setLabelFont(new Font("SimSun",Font.PLAIN,13));
//设置横坐标的坐标值的字体
domainAxis.setTickLabelFont(new Font("SimSun",Font.PLAIN,12));
//使横坐标设置生效
plot.setDomainAxis(domainAxis);
ValueAxis rangeAxis = plot.getRangeAxis();






return jfreechart;
}
//生成二维柱状图的图片,返回图片文件的名称
public static String generateBarChart( HttpSession session, PrintWriter pw) {
String filename = null;

CategoryDataset categoryDataset = createDataset();
JFreeChart chart = createChart(categoryDataset);

ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
try {
filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info,
session);
} catch (IOException e) {
e.printStackTrace();
}
try {
ChartUtilities.writeImageMap(pw, filename, info, false);
} catch (IOException e) {
e.printStackTrace();
}
pw.flush();
return filename;
}
}

最好谢谢各位啦。
...全文
341 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
natty_boy 2009-04-11
  • 打赏
  • 举报
回复
把字体设置成你操作系统所支持的字体就OK了

类似于这样
jfreechart.get图例.setFont(new Font("黑体", Font.BOLD, 20));

下面这块应该表示的事一个图例对象吧,因为我看到你的 title 可以设置字体
那这里也应该是一样的才对啊,没用过 JFreeChart ,所以不知道它这个图例
对象是什么,只好用 “get图例” 表示,应该有类似于 getTitle 这样的方法
你自己查查吧
superbingo 2009-04-11
  • 打赏
  • 举报
回复
图片在这里啦,不好意思
superbingo 2009-04-11
  • 打赏
  • 举报
回复
去掉字体?都成乱码啦
yhef 2009-04-11
  • 打赏
  • 举报
回复



你把字体去掉试试看。
superbingo 2009-04-11
  • 打赏
  • 举报
回复
图在这里,点击请看:http://hiphotos.baidu.com/%B6%FA%B1%DF%B5%C4%D7%D4%D3%C9%CA%AB/mpic/item/d6fddf1d478635a987d6b6b1.jpg谢谢啦

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧