一、JFreeChart获取。 
        JFreeChart是JFreeChart公司在开源网站SourceForge.net上的一个项目,该公司的主要产品有如下: 
        1、JFreeReport:报表解决工具 
        2、JFreeChart:Java图形解决方案(Application/Applet/Servlet/Jsp) 
        3、JCommon:JFreeReport和JFreeChart的公共类库 
        4、JFreeDesigner:JFreeReport的报表设计工具 
   我们可以从jfree官方网站上获取最新版本(最新的版本是1.0.5)和相关资料(但是jfree的Developer Guides是需要花美金才能获取), 
    获取地址:http://www.jfree.org/jfreechart/index.html(同时可以获得简明介绍) 
    我们以当前版本:jfreechart-1.0.0-rc3.tar.gz为例子进行说明 
二、JFreeChart配置安装 
    1、解压jfreechart_0.9.21.zip到指定位置,其中source是jfreechart的源码,jfreechart-0.9.21- demo.jar 
       是例子程序(该部分留给大家自己去研究) 
    2、为了配置成功,我们需要关注的文件有如下三个:jfreechart-0.9.21.jar、lib/jcommon-0.9.6.jar、 
       lib/gnujaxp.jar 
    3、如果是Application开发,把上述三个文件拷贝到%JAVA_HOME%/LIB中,同时在环境变量CLASSPATH中加入 
二、JFreeChart配置安装 
    1、解压jfreechart_0.9.21.zip到指定位置,其中source是jfreechart的源码,jfreechart-0.9.21- demo.jar 
       是例子程序(该部分留给大家自己去研究) 
    2、为了配置成功,我们需要关注的文件有如下三个:jfreechart-0.9.21.jar、lib/jcommon-0.9.6.jar、 
       lib/gnujaxp.jar 
    3、如果是Application开发,把上述三个文件拷贝到%JAVA_HOME%/LIB中,同时在环境变量CLASSPATH中加入 
       如果是WEB开发,以TOMCAT中的一个WEB项目TEST为例子说明: 
       把上述三个文件拷贝到TEST/WEB-INF/LIB中,然后修改TEST/WEB-INF/web.xml文件,在其中加入如下代码: 
                <servlet> 
                    <servlet-name>DisplayChart</servlet-name> 
                    <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class> 
                </servlet> 
                <servlet-mapping> 
                    <servlet-name>DisplayChart</servlet-name> 
                    <url-pattern>/servlet/DisplayChart</url-pattern> 
                </servlet-mapping> 
               至此jfreechart的配置就完成了,下面就可以进行jfreechart的开发了。这里值得提出的是jfreechart的类 
       结构设计前后兼容性不是很好,不同版本的jfreechart中类库结构可能不一样,有时候可能需要查源码。如果 
       是中文显示的时候可能依据观感需要改变源码的字体,不过我个人觉得这个版本比以前版本要好一些。 
三、JFreeChart功能介绍 
    JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方面: 
    pie charts (2D and 3D):饼图(平面和立体) 
    bar charts (regular and stacked, with an optional 3D effect):柱状图 
    line and area charts:曲线图 
    scatter plots and bubble charts 
    time series, high/low/open/close charts and candle stick charts:时序图 
    combination charts:复合图 
    Pareto charts 
    Gantt charts:甘特图 
    wind plots, meter charts and symbol charts 
    wafer map charts 
    (态图表,饼图(二维和三维) , 柱状图 (水平,垂直),线图,点图,时间变化图,甘特图, 股票行情图,混和图, 温度计图, 刻度图等常用商用图表) 
    图形可以导出成PNG和JPEG格式,同时还可以与PDF和EXCEL关联 
    JFreeChart核心类库介绍: 
            研究jfreechart源码发现源码的主要由两个大的包组成:org.jfree.chart,org.jfree.data。其中前者主要与图形 本身有关,后者与图形显示的数据有关。具体研究如果大家有兴趣的话可以自己研究,以后有时间我会告诉大家怎么去研究源码。 
         核心类主要有: 
           org.jfree.chart.JFreeChart:图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart 引擎本身提供了一个工厂类用于创建不同类型的图表对象 
           org.jfree.data.category.XXXDataSet:数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类 
           org.jfree.chart.plot.XXXPlot:图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、 Renderer以及数据集对象的支持 
           org.jfree.chart.axis.XXXAxis:用于处理图表的两个轴:纵轴和横轴 
           org.jfree.chart.render.XXXRender:负责如何显示一个图表对象 
           org.jfree.chart.urls.XXXURLGenerator:用于生成Web图表中每个项目的鼠标点击链接 
           XXXXXToolTipGenerator:用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类 
    四、JFreeChart开发(Application/Applet) 
one: pie charts
/**
* JfreeChartTest.java
* author:longlong
* May 31, 2007
*/
package com.ghg.java;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.chart.*;
public class JfreeChartTest {
public static void main(String[] args) {
//创建饼图数据对象
DefaultPieDataset dfp=new DefaultPieDataset();
dfp.setValue("管理人员", 25);
dfp.setValue("市场人员", 35);
dfp.setValue("开发人员", 20);
dfp.setValue("后勤人员", 5);
dfp.setValue("财务人员", 15);
//Create JFreeChart object
JFreeChart a =ChartFactory.createPieChart("CityInfoPort公司组织架构图",dfp, true, true, true);
ChartFrame frame=new ChartFrame ("CityInfoPort公司组织架构图 ",a,true);
frame.pack();
frame.setVisible(true);
}
}
Refactor one
/**
* JfreeChartOne.java
* author:longlong
* May 31, 2007
*/
package com.ghg.java;
import java.awt.Font;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
public class JfreeChartOne extends ApplicationFrame {
private static final long serialVersionUID = 1L;
public JfreeChartOne(String s)
{
super(s);
setContentPane(createJPanel());
}
public static void main(String[] args) {
JfreeChartOne one=new JfreeChartOne("CityInfoPort公司组织架构图");
one.pack();
one.setVisible(true);
}
//利用静态方法设定数据源(饼状图)
public static PieDataset createPieDataset() {
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
defaultpiedataset.setValue("管理人员", 10.02D);
defaultpiedataset.setValue("市场人员", 20.23D);
defaultpiedataset.setValue("开发人员", 60.02D);
defaultpiedataset.setValue("OEM人员", 10.02D);
defaultpiedataset.setValue("其他人员", 5.11D);
return defaultpiedataset;
}
// 通过ChartFactory创建JFreeChart的实例
public static JFreeChart createJFreeChart(PieDataset p)
{
JFreeChart a =ChartFactory.createPieChart("CityInfoPort公司组织架构图",p, true, true, true);
PiePlot pie=(PiePlot )a.getPlot();
pie.setLabelFont(new Font("SansSerif",Font.BOLD,12));
pie.setNoDataMessage("No data available");
pie.setCircular(true);
pie.setLabelGap(0.01D);//间距
return a;
}
public static JPanel createJPanel (){
JFreeChart jfreechart = createJFreeChart(createPieDataset());
return new ChartPanel(jfreechart);
}
}
效果如图所示:
two:创建类别图 
/**
* JfreeChartTest.java
* author:longlong
* May 31, 2007
*/
package com.ghg.java;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.chart.*;
import org.jfree.chart.plot.PlotOrientation;
public class JfreeChartTest {
public static void main(String[] args) {
// 创建类别图(Category)数据对象
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, "广州", "荔枝");
JFreeChart chart=ChartFactory.createBarChart3D("水果产量图", "水果", "水果", dataset, PlotOrientation.VERTICAL, true, true, true);
ChartFrame frame=new ChartFrame ("水果产量图 ",chart,true);
frame.pack();
frame.setVisible(true);
}
}
按照one的重构办法也可以对这个程序实现重构。 
  当前位置:主页>技术资讯>JSP编程>文章内容 
jFreeChart初探-JSP教程,资料/其他  
来源: 作者: 发布时间:2007-12-27  
//****************************************** 
//*             author:rautinee            * 
//*         email:rautinee@21cn.com        * 
//*         http://www.tryitsoft.com       * 
//*本文可自由传播使用,但请务必保留此信息  * 
//****************************************** 
jfreechart也许对大家来说很陌生,她是一款免费的、功能强大的统计图生成工具,能够直接生成png,jpg等各式的文档 
为我们java项目的研发增加了一部利器。她的英文简介 
jfreechart is a free java class library for generating charts, including: 
pie charts; 
line charts and horizontal/vertical bar charts (regular and stacked, with optional 3d-effect); 
xy plots and scatter plots; 
time series, high/low/open/close charts and candle stick charts; 
combination charts; 
pareto charts; 
gantt charts; 
bubble charts; 
wind plots, meter charts and symbol charts; 
正好我最近的一个项目用到她,于是就很粗略的看了一下,现在把他拿出来和大家分享,希望对大家的工作有所 
帮助。 
本文主要是讲解她在jsp上面的应用。例子采用jsp+javabean结构实现
准备工作:首先我们需要什么?当然是jfreechart的package了,能够在她的官方网站上面找到下载链接 
http://www.jfree.org/jfreechart/,把包下下来,配置到tomcat当中,然后能够开始我们的 jfreechart之旅 
了。 
下面我要做的是个饼状统计图,首先建立javabean文档
文档名:tryitshow.java
package com.tryit;
import java.io.*; 
import java.awt.insets; 
import java.awt.font; 
import java.io.printwriter; 
import java.text.simpledateformat; 
import java.util.iterator; 
import java.util.locale; 
import java.text.numberformat; 
import javax.servlet.http.httpsession; 
import org.jfree.data.*; 
import org.jfree.chart.*; 
import org.jfree.chart.axis.*; 
import org.jfree.chart.renderer.verticalbarrenderer; 
import org.jfree.chart.renderer.standardxyitemrenderer; 
import org.jfree.chart.plot.*; 
import org.jfree.chart.entity.*; 
import org.jfree.chart.tooltips.*; 
import org.jfree.chart.urls.*; 
import org.jfree.chart.servlet.*; 
import org.jfree.chart.texttitle; 
import java.net.url; 
public class tryitshow 
{ 
    public static string generatepiechart(string infostr, string titles,httpsession session, printwriter pw) 
        { 
            string filename = null; 
            font font; 
                        try { 
                    //  建立piedataset 
            defaultpiedataset data = new defaultpiedataset(); 
            string ss[]=infostr.split(","); 
            for (int n=0;n<ss.length;n++) 
            { 
                string sspart[]=ss[n].split("#"); 
                int tt=integer.parseint(sspart[1]); 
                string mm=sspart[0]; 
                data.setvalue(mm,tt); 
            } 
                        //  生成chart物件 
            pieplot plot = new pieplot(data); 
            plot.setinsets(new insets(0, 5, 5, 5)); 
plot.settooltipgenerator(new standardpietooltipgenerator());
font=new font("黑体",font.center_baseline,20);//这个地方是配置统计图标题的字体和大小
jfreechart chart = new jfreechart("",jfreechart.default_title_font, plot, true);
                        texttitle tt=new texttitle(titles); 
            tt.setfont(font); 
            chart.setbackgroundpaint(java.awt.color.white);//统计图片的底色 
            chart.settitle(tt); 
            //  把生成的文档写入到临时的目录中 
            chartrenderinginfo info = new chartrenderinginfo(new standardentitycollection()); 
            filename = servletutilities.savechartaspng(chart, 500, 300, info, session); 
//选择存储成png格式的文档,当然您也能够使用savechartasjpeg的方法生成jpg图片 
            //  把image map 写入到 printwriter 
            chartutilities.writeimagemap(pw, filename, info); 
            pw.flush(); 
            } 
            catch (exception ex) { 
            system.out.println("error:"+ex.getmessage()); 
            } 
            return filename; 
            } 
    } 
接着是jsp文档 
<%@ page contenttype="text/html;charset=gb2312"%> 
<%@ page import = "com.tryit.tryitshow" %> 
<%@ page import = "java.io.printwriter" %> 
<%@ page import = "java.text.simpledateformat" %> 
<%@ page import = "java.text.parseexception" %> 
<%@ page import = "java.util.arraylist" %> 
<%@ page import = "java.util.date" %> 
<%@ page import = "java.util.iterator" %> 
<%@ page import = "java.util.locale" %> 
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> 
<html> 
<head> 
<title> new document </title> 
<meta name="generator" content="editplus"> 
<meta name="author" content=""> 
<meta name="keywords" content=""> 
<meta name="description" content=""> 
</head> 
<% 
string filename = tryitshow.generatepiechart("本科#100,专科#200","人才学历信息统计",session, new printwriter(out)); 
    string graphurl = request.getcontextpath() + "/servlet/displaychart?filename=" + filename; 
    %> 
<body> 
<img src="<%= graphurl %>" width=500 height=300 border=0 usemap="#<%= filename %>"> 
</body> 
</html> 
ok,大功告成,当然,您能够采用其他方式,比如您能够把dataset的数据配置在xml文档中,从xml文档读取 
统计数据中添加百分比等等,还能够选择生成柱状图、折线图等。 
jfreechart更有很多其他的用法,希望大家能够多多交流。
web.xml文档的配置 
<web-app> 
  <servlet> 
    <servlet-name>displaychart</servlet-name> 
    <servlet-class>org.jfree.chart.servlet.displaychart</servlet-class> 
  </servlet> 
   <servlet-mapping> 
        <servlet-name>displaychart</servlet-name> 
        <url-pattern>/servlet/displaychart</url-pattern> 
    </servlet-mapping> 
</web-app> 
import java.awt.Insets; 
import java.awt.Image; 
import java.io.PrintWriter; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.Locale; 
import java.text.NumberFormat; 
import javax.servlet.http.HttpSession; 
import org.jfree.data.*; 
import org.jfree.chart.*; 
import org.jfree.chart.axis.*; 
import org.jfree.chart.renderer.VerticalBarRenderer; 
import org.jfree.chart.renderer.StandardXYItemRenderer; 
import org.jfree.chart.plot.*; 
import org.jfree.chart.entity.*; 
import org.jfree.chart.tooltips.*; 
import org.jfree.chart.urls.*; 
import org.jfree.chart.servlet.*; 
import java.awt.Font; 
/** 
* <p>Title: </p> 
* <p>Description: </p> 
* <p>Copyright: Copyright (c) 2003</p> 
* <p>Company: </p> 
* @author jagie 
* @version 1.0 
*/ 
public class GSPieChart { 
  public static void main(String[] args) { 
    Long[] testData = { 
        new Long(10), new Long(20), new Long(30), new Long(40)}; 
    generatePieChart(testData, "", null, new PrintWriter(System.out), 580, 250); 
  } 
  /** 
   * 生成图像文件 
   * @param datas Long[]数组 
   * @param targetUrl 点饼形图上的扇形,定向到的url 
   * @param session httpsession 
   * @param pw PrintWriter 
   * @param w 生成的图的宽度 
   * @param h 生成的图的高度 
   * @return 生成的图像文件的路径 
   */ 
  public static String generatePieChart(Long[] datas, String targetUrl, 
                                        HttpSession session, PrintWriter pw, 
                                        int w, int h) { 
    String filename = null; 
    try { 
      DefaultPieDataset data = new DefaultPieDataset(); 
      data.setValue("正常纳税人", datas[0]); 
      data.setValue("异常纳税人", datas[1]); 
      data.setValue("数据不全纳税人", datas[2]); 
      data.setValue("未处理纳税人", datas[3]); 
      //  Create the chart object 
      Pie3DPlot plot = new Pie3DPlot(data); 
      plot.setInsets(new Insets(0, 5, 5, 5)); 
      plot.setForegroundAlpha(0.6f); 
      plot.setSectionLabelType(plot.NO_LABELS); 
      plot.setURLGenerator(new StandardPieURLGenerator(targetUrl, "type")); 
      plot.setToolTipGenerator(new StandardPieToolTipGenerator()); 
      JFreeChart chart = new JFreeChart( 
"数据处理结果统计图", JFreeChart.DEFAULT_TITLE_FONT, plot, true); 
      chart.setTitle(new TextTitle( 
"数据处理结果统计图", new Font("黑体", Font.BOLD, 15))); 
      StandardLegend sl = (StandardLegend) chart.getLegend(); 
      sl.setItemFont(new Font("黑体", Font.TRUETYPE_FONT, 12)); 
chart.setBackgroundPaint(new java.awt.Color(254, 254, 141));
      //因为jfreechart把生成的png文件保存在系统的临时文件夹中,你需要在适当的  
      //时候调用session.removeAttribute("JFreeChart_Deleter"),这样可以保证png文 
      //件被删除掉 
      ChartRenderingInfo info = new ChartRenderingInfo(new 
          StandardEntityCollection()); 
      filename = ServletUtilities.saveChartAsPNG(chart, w, h, info, session); 
      //  Write the image map to the PrintWriter 
      ChartUtilities.writeImageMap(pw, filename, info); 
      pw.flush(); 
    } 
    catch (Exception e) { 
      System.out.println("Exception - " + e.toString()); 
      e.printStackTrace(System.out); 
      filename = "public_error_500x300.png"; 
    } 
    return filename; 
  } 
} 
.........java代码................. 
<%
//以下部分为图象输出 
String targetUrl="../servlet/gov.gwssi.tax.nspg. 
controlservlet.GSMainControlServlet?id="+sid; 
Long[] datas={normals,new Long(totalAbnormal), 
dataLacks,notProcesses}; 
String filename=GSPieChart.generatePieChart 
(datas,targetUrl,session,new PrintWriter(out),580,250); 
String graphURL = request.getContextPath() + 
"/servlet/DisplayChart?filename=" + filename; 
%>
JFreeChart Hacking 
来自于http://www.itepub.net/ 
<本文允许任意转载,请注明出处!最后一块骨头.2005-05-16> 
JFreeChart 是什么?我就不再重复介绍了,网上文章大把... 
官方主页:http://www.jfree.org/jfreechart/index.html 
<--本文以jfreechart-1.0.0-pre2版本为基准-->
那么为什么要Hacking JFreeChart呢?
罪状一:中文Label显示模糊; 
罪状二:无简体中文LocalizationBundle.properties文件; 
罪状三:向下兼容性不好,官方说jdk1.2+,其实是jdk1.4+; 
                兼容问题A:另存菜单输出PNG文件只能运行于jdk1.4+; 
                兼容问题B:另存菜单不能输出JPEG格式图片; 
                兼容问题C:jdk1.3-环境下中文ToolTips不能正常显示; 
如果一定要加一条罪状的话:目前开源免费的chart项目无出其右; 
十分感谢JFreeChart开发者的辛苦努力!虽然它现在还不完美。 
Ok,下面为Hacking做一些准备工作... 
1.下载jfreechart-1.0.0-pre2.zip解压; 
2.将/解压目录/source/下的源码加入任意project并配置jdk&lib; 
3.安装一个有批量文件查询/替换功能的工具,比如UtralEdit; 
<本文允许任意转载,请注明出处!最后一块骨头.2005-05-16>
Hacking Begin
1.解决中文Label显示模糊问题 
  原因分析:JFreeChart默认字体对中文的支持不完善; 
  解决步骤:搜索/解压目录/source/下含有"new Font("的文件; 
           发现JFreeChart默认字体为 
           "foo" 
           "Serif" 
           "Dialog" 
           "SansSerif" 
           "Bitstream Vera Sans" 
           批量替换他们为任意中文字体(推荐"黑体"); 
           当然你也可以把字体写入properties文件, 
           但这里介绍的是最简单的方法; 
           然后重新编译你修改过的文件,Ok,搞定! 
2.无简体中文LocalizationBundle.properties文件 
  org/jfree/chart/LocalizationBundle.properties 
  主要用来显示右键功能菜单的文字,下面我们来汉化: 
  注意:LocalizationBundle.properties的编码不是Unicode, 
       简体中文要用GBK编码。 
    获得GBK编码的方法是: 
  cd ***/j2sdk1.*.*/bin 
  native2ascii -encoding GBK 1.txt 2.txt 
  注:1.txt放中文文本,2.txt输出GBK编码。 
  # org.jfree.chart.ChartPanel ResourceBundle properties file 
# 
# Changes (from 31-Aug-2003) 
# -------------------------- 
# 31-Aug-2003 : Initial version (AL); 
# 16-May-2005 : Add GBK version (FinalBone); 
# 16-May-2005 : Add JPG_Image_Files (FinalBone); 
#---------------EN---------------# 
#Auto_Range=Auto Range 
#All_Axes=Both Axes 
#Chart_Properties=Chart Properties 
#Copy=Copy 
#Print...=Print... 
#Save_as...=Save as... 
#Properties...=Properties... 
#PNG_Image_Files=PNG Image Files 
#JPG_Image_Files=JPG Image Files 
#Domain_Axis=Domain Axis 
#Range_Axis=Range Axis 
#Zoom_In=Zoom In 
#Zoom_Out=Zoom Out 
#---------------GBK---------------# 
Auto_Range=/u81ea/u52a8/u8c03/u6574 
All_Axes=/u6240/u6709/u5750/u6807/u8f74 
Chart_Properties=/u56fe/u8868/u5c5e/u6027 
Copy=/u590d/u5236 
Print...=/u6253/u5370... 
Save_as...=/u53e6/u5b58/u4e3a... 
Properties...=/u5c5e/u6027... 
PNG_Image_Files=PNG/u56fe/u50cf 
JPG_Image_Files=JPG/u56fe/u50cf 
Domain_Axis=/u57df/u5750/u6807/u8f74 
Range_Axis=/u503c/u5750/u6807/u8f74 
Zoom_In=/u653e/u5927 
Zoom_Out=/u7f29/u5c0f 
另外还有两个同名文件,希望大家有时间也汉化一下。 
org/jfree/chart/ui/LocalizationBundle.properties 
org/jfree/chart/plot/LocalizationBundle.properties 
3.兼容性问题 
   a.PNG输出问题 b.无JPEG输出菜单 
    原因分析:javax.imageio.ImageIO这个类只有jdk1.4+才有。 
    解决步骤:1.打开org.jfree.chart.ChartPanel, 
               查看doSaveAs()方法,了解其结构; 
             2.改写doSaveAs()方法,重新编译; 
             3.如果运行环境是jdk1.3- 
               打开org.jfree.chart.encoders.SunPNGEncoderAdapter 
               注释掉javax.imageio.ImageIO,重新编译。 
    /** 
     * Updated by FinalBone 2005-5-16 PNG --> JPEG 
     * 
     * Opens a file chooser and gives the user an opportunity 
     * to save the chart in JPEG format. 
     * 
     * @throws IOException if there is an I/O error. 
     */ 
    public void doSaveAs() throws IOException { 
        JFileChooser fileChooser = new JFileChooser(); 
        ExtensionFileFilter filter = new ExtensionFileFilter( 
            localizationResources.getString("JPG_Image_Files"), ".jpg" 
        ); 
        fileChooser.addChoosableFileFilter(filter); 
        int option = fileChooser.showSaveDialog(this); 
        if (option == JFileChooser.APPROVE_OPTION) { 
            String filename = fileChooser.getSelectedFile().getPath(); 
            if (isEnforceFileExtensions()) { 
                if (!filename.endsWith(".jpg")) { 
                    filename = filename + ".jpg"; 
                } 
            } 
            ChartUtilities.saveChartAsJPEG( 
                new File(filename), this.chart, getWidth(), getHeight() 
            ); 
        } 
}
  c.中文ToolTips不能正常显示(显示为小方框) 
    原因分析:相关字体找不到。 
    解决步骤:1.打开org.jfree.chart.block.LabelBlock 
               查看其构造函数public LabelBlock(String label); 
             2.修改构造函数的字体定义,重新编译。 
    /** 
     * Creates a new label block. 
     * 
     * @param label  the label. 
     */ 
    public LabelBlock(String label) { 
         /** 
          * Updated by FinalBone 2005-05-16 
          * "Bitstream Vera Sans" --> "黑体" 
          * For Chinese-Simplified ToolTips 
          * JDK 1.3- Environment 
          */ 
        this(label, new Font("黑体", Font.PLAIN, 11)); 
    } 
Hacking End
<本文允许任意转载,请注明出处!最后一块骨头.2005-05-16>
这时的 JFreeChart 才是真正jdk1.2+兼容,完美支持中文。
希望下一版本的 JFreeChart 的字体定义写入properties文件, 
并且不同路经下的properties文件最好不要重名。 
本人接触 JFreeChart 刚刚几天,错漏难免,请多多指正!
相关知识
素描教程:静物花卉教程
【教程】插花教程
【教程
水粉画教程
水彩画教程
简笔画教程
插画教程
钩针教程
皱纹纸手工花折纸教程教程 手工折纸大全
布艺插花教程
网址: JFreeChart教程 https://m.huajiangbk.com/newsview661973.html
| 上一篇: 观察花作文300字(通用21篇) | 下一篇: 【字体雕刻瓷砖】 |