- 浏览: 310143 次
最新评论
-
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
hunanjun000:
《研磨struts2》第四章 Action 之 4.5 Action的其它重要知识
18.1 JFreeChart使用
18.1.1概述
对于一个企业级的应用而言,经常会用到一些直观的图形化报表,用于帮助用户进行商业决策或者逻辑分析等,比如:
- 用一个饼图来显示公司员工的学历比例,比如本科生占50%,研究生占30%,博士占20%。
- 也可以用一个折线图来显示销售人员近几年的业绩,比如,小王2007年销售额15万,2008年20万,2009年20万;而小张2007年销售额10万,2008年50万,2009年100万。
诸如此类,还有很多…
图形化的报表总是比枯燥的数字让人来的有兴趣,而且图形化报表在企业级应用中通常都是必不可少的,那么该怎么实现呢?
JFreeChart就是一个能帮助我们实现图形化报表的开源框架。JFreeChart封装了各种各样的图形化的报表模型,使得我们不用去关心如何画图形报表,而是直接把数据对象交给JFreeChart,由它来帮我们生成图形化的报表,从而使得开发图形化的报表变得非常简单。
请注意:在本节并不把Struts2和JFreeChart结合起来,而是先学习和JFreeChart的基础知识。
18.1.2 JFreeChart下载
到JFreeChart的官网http://www.jfree.org/jfreechart/download.html下载相关的资源,找到JFreeChart的资源包jfreechart-1.0.13.zip,并下载。
解压下载的文件,可以得到如下的目录结构:
图18.1 JFreeChart目录结构
在这里无需全面展开学习JFreeChart,所以只需要看两个文件夹:
- lib:这里面放了JFreeChart的jar包,和所有JFreeChart依赖的jar包。
- tests:这里存放了官方以junit的方式来实现的单元测试的用例,其实,可以把它当做官方示例来看待。
其他文件夹的内容这里暂时用不到,就不去管了。
18.1.3使用JFreeChart画出饼图
要使用JFreeChart来画饼图,首先需要把lib中JFreeChart依赖的jar包添加到web工程中。
方式是:从上一节中解压的文件夹中找到lib下的jfreechart-1.0.13.jar和jcommon-1.0.16.jar,拷贝到web工程的WebContent/WEB-INF/lib包下面,这样就可以在工程中引用JFreeChart了。
接下来,先在非web环境下做一个示例来使用JFreeChart画出饼图,也就是在纯Java的环境下使用JFreeChart来画饼图。示例代码如下:
- /**
- * 图表实际上分以下部分
- * 1、图表标题部分
- * 2、实际统计图部分
- * 3、图表图例部分
- * 着重强调,所有涉及到汉字的部分,必须重新设置字体,否则显示乱码
- * plot.setLabelFont(new Font("simsun",Font.ITALIC,14));
- * 否则item的标题会出现中文乱码问题
- */
- public class MyPie extends ApplicationFrame{
- private static final Font font = new Font("simsun",Font.ITALIC,22);
- public MyPie(String title) {
- super(title);
- setContentPane(new ChartPanel(getChart()));
- }
- /**
- * 图表需要的数据
- * 对于饼图来说,建立的数据就像Map一样
- * @return 封装好的画pie图的数据集对象
- */
- private static DefaultPieDataset getDataset(){
- DefaultPieDataset dataset = new DefaultPieDataset();
- dataset.setValue("本科生", 50);
- dataset.setValue("研究生", 30);
- dataset.setValue("博士", 20);
- return dataset;
- }
- /**
- * 控制图表的各个显示细节,准备chart对象,要注意的就是设置各个部分的Font
- * 而返回的JFreeChart对象就是各种各样的统计图表,现在返回的是饼图
- * @return 准备好了的JFreeChart对象
- */
- public JFreeChart getChart(){
- final DefaultPieDataset dataset = getDataset();
- JFreeChart chart = ChartFactory.createPieChart("XX公司员工学历比例图",
- dataset,
- true,//是否有标题
- false,//是否有悬浮提示
- false//是否有连接
- );
- chart.setTitle(new TextTitle("XX公司员工学历比例图",font));
- //重新设置图例的字体,保证汉字的显示
- LegendTitle legend = chart.getLegend();
- legend.setItemFont(font);
- //重新设置统计表对象的字体,保证汉字的显示
- PiePlot plot = (PiePlot) chart.getPlot();
- plot.setBackgroundAlpha(0.9f);
- plot.setLabelFont(font);
- return chart;
- }
- public static void main(String[] args) {
- //最终测试一下
- MyPie demo = new MyPie("XX公司员工学历比例图");
- demo.pack();
- RefineryUtilities.centerFrameOnScreen(demo);
- demo.setVisible(true);
- }
- }
来看看上述代码的实现细节:
- getDataset方法为这次显示准备数据,而饼图需要的数据需要配套的DefaultPieDataset对象来容纳,它容纳数据的时候,就像一个Map,上例中给出了某个学历对应有多少人。
- getChart方法返回一个JFreeChart的图表对象,在这个方法里我们只需要管理图表对象的各部分内容即可。这个最简单的饼图对象,只需要管理它的标题(TextTitle)、图例(LegendTitle)、图表(PiePlot)三部分就可以了。大多数参数使用默认的配置就行,需要着重强调的是,JFreeChart对中文的支持并不好,涉及到中文的地方需要重新设置字体才能正常显示。所以会有以下的设置:
l chart.setTitle(new TextTitle("XX公司员工学历比例图",font));重新设置标题的字体,其中,引用的font对象为这个类的private static final属性。
l legend.setItemFont(font);重新设置图例的字体,引用的font对象同上。
l plot.setLabelFont(font);重新设置图表的字体,引用的font对象同上。
除了上面这两个部分外,剩下的部分就是测试JFreeChart图表的方法了,基本的方式如下:
- 测试类要继承ApplicationFrame,这是JFreeChart中为我们写好的一个类,如果使用它就可以用一个单独的JFrame来显示图表。
- 构造方法中setContentPane(new ChartPanel(getChart()));将生成的图表对象放到这个JFrame的ContentPane上。
现在可以运行测试了,直接运行这个类的main方法,在Eclipse中可以在代码窗口上右击选择【Run as】->【Java Application】。可以看到弹出一个窗口,上面显示着按照测试数据生成的饼图图表,如下图所示:
图18.2 使用JFreeChart画出的饼图
18.1.4使用JFreeChart画出柱状图
再来看看如何使用JFreeChart来画柱状图,基本的实现方式和画饼图是类似的,下面就来把上面实现的饼图变成柱状图。示例代码如下:
- public class MyBar extends ApplicationFrame{
- private static final Font font = new Font("simsun",Font.ITALIC,22);
- public MyBar(String title) {
- super(title);
- setContentPane(new ChartPanel(getChart()));
- }
- /**
- * 图表需要的数据
- * 对于柱状图来说,建立的数据就像Map一样
- * @return 封装好的画柱状图的数据集对象
- */
- private static DefaultCategoryDataset getDataset(){
- DefaultCategoryDataset dataset = new DefaultCategoryDataset();
- dataset.setValue(50,"本科生","本科生");
- dataset.setValue(30,"研究生","研究生");
- dataset.setValue(20,"博士","博士");
- return dataset;
- }
- /**
- * 控制图表的各个显示细节,准备chart对象,要注意的就是设置各个部分的Font
- * 而返回的JFreeChart对象就是各种各样的统计图表,现在返回的是柱状图
- * @return 准备好了的JFreeChart对象
- */
- public JFreeChart getChart(){
- final DefaultCategoryDataset dataset = getDataset();
- JFreeChart chart = ChartFactory.createBarChart3D("XX公司员工学历比例图","学历","人数",
- dataset,PlotOrientation.VERTICAL,true, false, false
- );
- chart.setTitle(new TextTitle("XX公司员工学历比例图",font));
- //重新设置图例的字体,保证汉字的显示
- LegendTitle legend = chart.getLegend();
- legend.setItemFont(font);
- //设置X轴坐标上的文字的字体
- chart.getCategoryPlot().getDomainAxis().setTickLabelFont(font);
- //设置X轴坐标标题的字体
- chart.getCategoryPlot().getDomainAxis().setLabelFont(font);
- //设置Y轴坐标上的文字的字体
- chart.getCategoryPlot().getRangeAxis().setTickLabelFont(font);
- //设置Y轴坐标标题的字体
- chart.getCategoryPlot().getRangeAxis().setLabelFont(font);
- return chart;
- }
- public static void main(String[] args) {
- //最终测试一下
- MyBar demo = new MyBar("XX公司员工学历比例图");
- demo.pack();
- RefineryUtilities.centerFrameOnScreen(demo);
- demo.setVisible(true);
- }
- }
去运行测试一下,运行结果如下图所示:
图18.3 使用JFreeChart画出的柱状图
18.1.5小结
JFreeChart作为一个免费的功能强大的图形报表工具,专注于如何显示图形报表。因此,在使用JFreeChart的时候,我们不需要关注如何生成图形,只需要专注究竟要显示什么样的数据。
JFreeChart的功能很多,由于本书的重心是学习Struts2的知识,本章也只是来学习Struts2如何结合使用JFreeChart,并不是JFreeChart的指导用书,因此更多、更复杂的JFreeChart的知识,请参看JFreeChart的文档或相应资料。
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4168.html】
欢迎访问http://sishuok.com获取更多内容
发表评论
-
研磨struts2 目录贴
2012-08-24 12:12 163511.1 《研磨struts2》 第一章 Struts2 ... -
跟着cc学设计 之 研磨设计模式 视频教程 出炉了
2012-08-15 07:16 2研磨设计模式——跟着CC学设计系列精品课程,上线了! ... -
研磨struts2 目录
2012-07-30 21:15 2471.1 《研磨struts2》 第一章 Strut ... -
研磨struts2 目录
2012-07-30 16:54 361.1 《研磨struts2》 第一章 Stru ... -
《研磨struts2》A.2 struts.properties的配置 之 A.2.1 概述
2012-07-09 12:10 3069A.2.1 概述 如果我们希望覆盖在 ... -
《研磨struts2》附录A Struts2的配置 之 A.1 struts.xml的配置
2012-07-09 12:10 2717A.1 struts.xml的配置 A.1.1 ... -
《研磨struts2》第二十一章 零配置 之 21.3 通过注解来实现零配置
2012-07-06 08:07 292621.3 通过注解来实现零配置 21.3.1 ... -
《研磨struts2》第二十一章 零配置 之 21.2 约定大于配置
2012-07-05 10:44 247221.2 约定大于配置 21.2.1 约定 ... -
《研磨struts2》第二十一章 零配置 之 21.1 概述
2012-07-05 10:44 232521.1 概述 21.1.1 零配置概述 在 ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.3 整合Struts2与SiteMesh
2012-07-04 08:15 2087在Struts2中使用SiteMesh ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.2 单独使用SiteMesh
2012-07-03 08:00 210220.2 单独使用SiteMesh 20. ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.1 调整应用的风格
2012-07-03 07:59 186820.1 调整应用的风 ... -
《研磨struts2》19.2 使用execAndWait拦截器模拟进度条 之 19.2.1 模拟长时间运行的Action
2012-07-02 12:24 214819.2.1模拟长时间运行的Action ... -
《研磨struts2》第十九章 进度条 之 19.1 使用“进度条”告知用户进度
2012-07-02 12:23 215119.1 使用“进度条”告知用户进度 ... -
《研磨struts2》第十八章 结合JFreeChart 之 18.3 Struts2结合JFreeChart
2012-06-28 12:12 201318.3 Struts2结合JFreeChart ... -
《研磨struts2》第十八章 结合JFreeChart 之 18.2 Struts2插件概述
2012-06-28 12:11 2029Struts2并没有求大求全,企图把所有 ... -
研磨struts2(1-10章)电子书下载
2012-06-19 07:30 6076研磨struts2的博客文章 私塾在线学习网 《研 ... -
《研磨struts2》第十七章 防止重复提交 之 17.3 更强大的tokenSession拦截器
2012-06-18 13:46 208017.3 更强大的tokenSession拦截器 ... -
《研磨struts2》第十七章 防止重复提交 之 17.2 使用标签
2012-06-18 13:45 233817.2 使用<s:token/>标签 ... -
《研磨struts2》第十七章 防止重复提交 之 17.1 什么是重复提交
2012-06-18 13:45 215817.1 什么是重复提交 所谓重复提交,就是用户在 ...
相关推荐
Struts2和JFreeChart是两个在Java Web开发中广泛使用的开源库。Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建可维护性和可扩展性极高的Web应用程序,而JFreeChart则是一个用于生成高质量图表的...
这就是一个简单的Struts2与JFreeChart结合使用的实例,展示了如何在Web应用中创建动态图表并呈现给用户。 通过这种方式,开发者可以利用Struts2的灵活性和JFreeChart的强大图表功能,轻松创建各种复杂的数据分析和...
Struts2和JFreeChart是两个在Java Web开发中广泛使用的框架和技术。Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建结构化的Web应用程序,而JFreeChart是一个开源图表库,能够生成各种高质量的图表...
Struts2和JFreeChart是两个在Java Web开发中广泛使用的框架。Struts2作为MVC(模型-视图-控制器)架构的一部分,主要用于处理HTTP请求和管理业务逻辑,而JFreeChart则是一个强大的库,用于创建各种图表,如线图、...
以上就是关于“Struts2结合JFreechart”的基本知识点。通过这种方式,开发者可以在Struts2驱动的Web应用中轻松实现数据的可视化,提升用户体验。这个资源包中的代码示例、jar包和说明文档将帮助你快速理解和实践这个...
Struts2和JFreeChart是两个在Java开发中常用的库。Struts2是一个基于MVC设计模式的Web应用框架,用于构建动态、数据驱动的Java Web应用,而JFreeChart则是一个强大的图表生成库,可以生成各种类型的图表,如柱状图、...
综上所述,"JFreeChart(Struts1+jFreeChart)"的整合是Java Web开发中的一个典型应用场景,它结合了Struts1的MVC架构优势和JFreeChart的图表绘制能力,实现了动态数据的可视化展示。在实际项目中,还需要考虑如何优化...
总的来说,JFreeChart和Struts2的结合使用,使得Java开发者能够方便地在Web应用中实现各种复杂的图表功能,从而提升数据可视化的质量和用户体验。这五种实践方法覆盖了从静态展示到动态交互,从直接输出到异步加载的...
Struts2和JFreeChart是两个在Java Web开发中广泛使用的开源库,它们分别负责MVC框架和数据可视化。在企业级应用中,通常需要生成各种报表和统计图表来展示数据,而Struts2和JFreeChart的结合就提供了解决这一需求的...
这是一个获取用户信息的投票系统,包含需求及代码,可以了解投票系统的基本需求,如何分析和设计数据库、使用JSP +JavaBean+Struts2+JDBC+JFreeChart进行开发、学会MySQL数据库的基本使用、使用JFreeChart画柱状图、...
首先,整合Struts2和JFreeChart的首要步骤是确保在项目中引入JFreeChart和相关依赖。你需要在你的Maven或Gradle配置文件中添加JFreeChart的依赖,通常为以下形式: ```xml <groupId>org.jfree <artifactId>...
【JfreeChart与Struts2结合使用】 JFreeChart是一个强大的Java图表库,它提供了丰富的图表类型,如柱状图、饼图、折线图、散点图等,用于数据可视化。Struts2是一个流行的MVC框架,常用于构建企业级Web应用。将...
Struts2是一个强大的Java web应用程序框架,它提供了一种组织和控制MVC(模型-视图-控制器)架构的方式,使得...通过学习和实践这个例子,你可以熟练掌握Struts2与JFreeChart的结合,提升你的Web应用的数据可视化能力。
"struts2-jfreechart-plugin-2.1.6.jar.zip_jfreechart struts2_jfree" 这个标题表明这是一个关于Struts2与JFreeChart结合使用的插件,版本为2.1.6。这个插件简化了在Struts2应用中使用JFreeChart的过程,使得开发者...
将JFreeChart与Struts2整合,可以将动态生成的图表展示在Web页面上,为用户提供直观的数据展示。 首先,我们需要理解JFreeChart的基本用法。JFreeChart提供了丰富的API来创建和定制图表。例如,要创建一个简单的...
### 知识点一:Struts2入门(MVC HelloWorld) #### 1.1 Struts2简介 ...以上就是关于“研磨Struts2”的主要知识点梳理,通过深入学习这些内容,开发者可以更好地掌握Struts2框架的核心技术和实践技巧。
Struts2和JFreeChart是两个在Java Web开发中广泛使用的框架和库。Struts2是一种基于MVC设计模式的开源框架,用于构建企业级Web应用程序,而JFreeChart则是一个强大的图表生成库,能够创建各种类型的图表,如饼图、...
总之,将Struts2与JFreeChart结合使用,可以帮助我们构建出具有强大数据可视化的Web应用。不过,需要注意的是,性能优化和用户体验也是不容忽视的方面,例如,可以通过缓存图表来减少服务器负载,或者使用SVG格式来...
struts2-jfreechart-plugin-2.1.8.1.jar
struts2整合JFreechart: jcommon-1.0.16.jar jfreechart-1.0.13.jar struts2-jfreechart-plugin-2.0.11.jar 导成图片操作说明