JFreeChart的简单应用以及解决中文显示方框的问题(一)

2014-11-24 10:08:58 · 作者: · 浏览: 5

JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得到广泛的应用。但是有的时候会出现方框的情况,下面就来通过例子来说明如何让中文显示出来。
要让一个JFreeChar生成图形并显示需要经过下面的步骤:
1、创建DataSet的数据集合
[java]
/**
* 创建一个数据集合
*
* @return
*/
private static DefaultPieDataset getDataSet() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("苹果", 100);
dataset.setValue("梨子", 200);
dataset.setValue("葡萄", 300);
dataset.setValue("香蕉", 400);
dataset.setValue("荔枝", 500);
return dataset;
}
2、通过ChartFactory创建JFreeChart图表
[java]
JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", // 图表标题
data, // 数据集
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);// 创建图表
3、将图表显示出来
[java]
ChartUtilities.writeChartAsJPEG(res.getOutputStream(), 1.0f, chart,
800, 450, null);// 输出图表
下面是一个在Web页面上显示的例子:
[java]
package org.ml.servlet;

import java.awt.Font;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;

public class ChartDemoServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

public ChartDemoServlet() {

super();
}

@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
res.setContentType("image/jpeg");// 将输出设置为image/jepg格式
DefaultPieDataset data = getDataSet();// 创建数据集合容器
JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", // 图表标题
data, // 数据集
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);// 创建图表
ChartUtilities.writeChartAsJPEG(res.getOutputStream(), 1.0f, chart,
800, 450, null);// 输出图表
}

/**
* 创建一个数据集合
*
* @return
*/
private static DefaultPieDataset getDataSet() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("苹果", 100);
dataset.setValue("梨子", 200);
dataset.setValue("葡萄", 300);
dataset.setValue("香蕉", 400);
dataset.setValue("荔枝", 500);
return dataset;
}
}
Web.xml中对Servlet的配置如下:
[html]
< xml version="1.0" encoding="UTF-8" >
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

ChartDemoServlet
org.ml.servlet.ChartDemoServlet



ChartDemoServlet
/servlet/ChartDemoServlet


浏览器地址栏中输入:http://localhost:10086/JFreeChart/servlet/ChartDemoServlet进行访问的到下面的显示结果:

从图表中可以看到,中文不能显示,都变成了一个个的小方框。要解决这个问题需要在代码中添加下面这样的设置。
[java]
Font titleFont = new