给你一个例子吧。package com.chart.struts;import java.awt.Font;
import java.io.IOException;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
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.TextTitle;
import org.jfree.data.general.DefaultPieDataset;/**
 * @author 韩曦
 *          email: [email protected]
 *          blog:   http://www.blogjava.net/hill
 * @date Jan 12, 20094:48:54 PM
 */
public class ChartAction  extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) 
{
ActionForward forward=new ActionForward();
//response.setCharacterEncoding("gb2312");
response.setContentType("image/jpeg");
DefaultPieDataset data=getDataSet();

JFreeChart chart=ChartFactory.createPieChart3D("水果产量图", data, true, false, false);

Font font = new Font("SimSun", 10, 20); 
TextTitle txtTitle = null; 
txtTitle = chart.getTitle(); 
txtTitle.setFont(font); 
PiePlot pieplot = (PiePlot)chart.getPlot(); 
pieplot.setLabelFont(font); 
chart.getLegend().setItemFont(font); 

try {
ChartUtilities.writeChartAsJPEG(response.getOutputStream(), chart, 300, 400);
System.out.print("OK");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return forward=mapping.findForward("success");

}
/**
 * 获取一个演示用的简单数据集对象
 * @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;
}}

解决方案 »

  1.   

    这是由于编译器编译时的问题,由于英文环境的原因,没有汉字字体。你的Java在安装后也没有汉字字体,在英文环境就会出现乱码。下面是linux环境下编译Java汉字乱码问题,简单方法是: +   
    - 1 .建立目录:$JAVA_HOME/jre/lib/fonts/fallback; + [[Linux 入门教程]] 
    - 2. cp中文字体到刚才建立的目录中,或者在这个目录中建立到中文字体的连接(用ln 命令); +   
    - 3. 大功告成。 
      

  2.   

    jfreechart中的乱码我也遇到过,当时是在windows下弄好的项目,放到了redhat7上,发现图中的汉字都成了乱码。我就是用上面的方法,把汉字的字体文件拷贝到JRE新建的目录下,问题解决了。楼主的问题好像和我的问题差不多 啊