11.1 初涉JFreeChart
11.1.1 JFreeChart简介
本节来学习一款非常好的统计图表生成工具JFreeChart。JFreeChart使用起来非常简单,而且功能非常强大。大部分企业级应用所需的统计图,都能够通过它生成。通过Struts 2整合JFreeChart后,Struts 2能够直接以JFreeChart图表作为表示层直接输出。
下面先来感受一下使用JFreeChart生成的统计图表,如图11.1所示。
图11.1 JFreeChart生成的统计图表
上面展示的是饼图,通过JFreeChart还可以生成其他非常多的统计图表,如柱状图、折线图、面积图等。
11.1.2 下载和安装JFreeChart
登录JFreeChart的官方网站http://www.jfree.org,如图11.2所示,并找到其中的JFreeChart项目选择下载。JFreeChart项目的当前最高版本为1.0.9。
下载JFreeChart时,有如下3个选项,如图11.3所示。
❑ JFreeChart:JFreeChart项目的压缩文件。
❑ Documentation:JFreeChart的API文档。
❑ JCommon:JCommon项目的压缩文件。
图11.2 FreeChart的官方网站
图11.3 FreeChart下载页面
其中JFreeChart选项文件必须下载,如果需要查看JFreeChart项目API文档和参考JCommon项目源代码可以下载下面两个选项文件。解压缩其中的“jfreechart-1.0.9.zip”文件,如图11.4所示。
图11.4 “jfreechart-1.0.9.zip”文件结构
“jfreechart-1.0.9.zip”文件中包含如下文件及目录。
❑ ant:该文件夹用来存放编译JFreeChart项目的“build.xml”文件,同时可以生成JFreeChart项目的API文档。
❑ checkstyle:该文件夹用来存放生成JFreeChart项目的API文档时所需的样式文件。
❑ experimental:该文件夹用来存放JFreeChart项目实验期新增功能的源代码。
❑ lib:该文件夹用来存放JFreeChart项目的JAR文件,同时包括编译和运行JFreeChart项目依赖的第三方JAR文件。
❑ source:该文件夹用来存放JFreeChart项目的源代码。
❑ swt:该文件夹用来存放提供的SWT支持的源文件。
❑ tests:该文件夹用来存放JFreeChart项目单元测试的测试用例文件。
❑ jfreechart-1.0.9-demo.jar:JfreeChart的演示文件,可以直接双击运行“Java(TM) Platform SE binary”。也可以在控制台下使用“java -jar jfreechart-1.0.9-demo.jar”命令来运行。
如果是创建Java应用程序,则只需将lib目录下的“jcommon-1.0.12.jar”和“jfreechart-1.0.9.jar”添加到ClassPath下或者使用Eclipse导入JAR。如果是开发Web应用,则只需将lib目录下的“jcommon-1.0.12.jar”和“jfreechart-1.0.9.jar”复制到Web项目的WEB-INF、lib目录下。
11.1.3 使用JFreeChart生成饼图
下载和安装完成后,就可以使用JFreeChart来生成各种统计图表了。首先新建一个Java程序,并通过JFreeChart生成一个饼图并显示,代码如下所示。
package net.hncu.jfreechart; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.data.general.DefaultPieDataset; public class TestPieChart { public static void main(String[] args) { // 准备数据集 DefaultPieDataset dpd = new DefaultPieDataset(); // 设置数据 dpd.setValue("讲师", 800); dpd.setValue("副教授", 400); dpd.setValue("教授", 100); // 使用工厂类创建饼图 JFreeChart chart = ChartFactory.createPieChart( "学校职称人员统计图", dpd, false, false, false); // 创建一个frame来显示图标 ChartFrame chartFrame = new ChartFrame("学校职称人员统计图", chart); chartFrame.pack(); chartFrame.setVisible(true); } }
从上面的代码可以看出,首先要准备数据集,当然这些数据也可以是从数据库中取出来的。然后调用ChartFactory类中的createPieChart()方法生成一个JFreeChart实例。最后通过ChartFrame包装这个JFreeChart并显示出来。直接运行该Java程序就可以看到生成的饼图,如图11.5所示。
图11.5 JFreeChart生成饼图