Struts2学习笔记18:JFreeChart

 

Struts2学习笔记18JFreeChart

第二十一,二十二讲

学习内容:

1.两个简单的JFreeChart实例

2.将JFreeChart生成的图片保存到本地磁盘上

3.在页面上显示JFreeChart图片

首要工作:

导入相关包(从课件中导入,在网上下载的最新版本的JFreeChart显示中文的时候出现乱码)

jcommon-1.0.12.jar , jfreechart-1.0.9.jar

详细内容:

 1.制作一个饼图,将其中一些方法的参数信息当作注释,显示出来,但是在真正的编写代码时候,主要是参考API文档

  1. package test;
  2. import java.awt.Font;
  3. import org.jfree.chart.ChartFactory;
  4. import org.jfree.chart.ChartFrame;
  5. import org.jfree.chart.JFreeChart;
  6. import org.jfree.chart.plot.PiePlot;
  7. import org.jfree.data.general.DefaultPieDataset;
  8. public class TestJFreeChart1 {
  9. public static void main(String[] args) {
  10. //先为饼图准本数据
  11. DefaultPieDataset dpd = new DefaultPieDataset();
  12. dpd.setValue( "管理人员" , 30 );
  13. dpd.setValue( "开发人员" , 50 );
  14. dpd.setValue( "销售人员" , 42 );
  15. dpd.setValue( "策划人员" , 15 ); 
  16. //创建图表
  17. //createPieChart(java.lang.String title, PieDataset dataset, boolean legend, boolean tooltips, boolean urls) 
  18. JFreeChart chart = ChartFactory.createPieChart( "公司人员分布图" , dpd , true , true , true );
  19. //获取plot
  20. PiePlot plot = (PiePlot)chart.getPlot();
  21. //设置plot的字体类型,即"管理人员","开发人员","销售人员","策划人员"的字体类型
  22. //plot.setLabelFont(java.awt.Font font) 
  23. //public Font(String name, int style, int size)
  24. plot.setLabelFont(new Font("隶书", Font.BOLD + Font.ITALIC, 14));
  25. //ChartFrame(java.lang.String title, JFreeChart chart) 
  26. ChartFrame cf = new ChartFrame( "某公司人员分布图" , chart );
  27.         添加代码处
  28. cf.pack();
  29. cf.setVisible( true );
  30. }
  31. }

运行效果如图所示:

 

2.制作一个柱形图

  1. package test;
  2. import java.awt.Font;
  3. import javax.swing.JPanel;
  4. import org.jfree.chart.ChartFactory;
  5. import org.jfree.chart.ChartPanel;
  6. import org.jfree.chart.JFreeChart;
  7. import org.jfree.chart.axis.CategoryAxis;
  8. import org.jfree.chart.axis.ValueAxis;
  9. import org.jfree.chart.plot.CategoryPlot;
  10. import org.jfree.chart.plot.PlotOrientation;
  11. import org.jfree.chart.title.LegendTitle;
  12. import org.jfree.chart.title.TextTitle;
  13. import org.jfree.data.category.DefaultCategoryDataset;
  14. import org.jfree.ui.ApplicationFrame;
  15. public class TestJFreeChart2_1 extends ApplicationFrame{
  16. private static final long serialVersionUID = -3361537106012344957L;
  17. public TestJFreeChart2_1 ( String title){
  18. super(title);
  19. this.setContentPane(createPanel());
  20. }
  21. public static DefaultCategoryDataset createCategory() {
  22. DefaultCategoryDataset dcd = new DefaultCategoryDataset();
  23. dcd.setValue(10"aa""管理人员");
  24. dcd.setValue(25"bb""销售人员");
  25. dcd.setValue(38"cc""开发人员");
  26. dcd.setValue(40"dd""策划人员");
  27. return dcd;
  28. }
  29. public static JFreeChart createChart(DefaultCategoryDataset dcd) {
  30. JFreeChart chart = ChartFactory.createBarChart3D("公司人员分布图""人员分布",
  31. "人员数量", dcd, PlotOrientation.VERTICAL, truefalsefalse);
  32. //设置chart的主题字体
  33. chart.setTitle(new TextTitle("某公司人员分布图"new Font("隶书", Font.BOLD
  34. 32)));
  35. CategoryPlot plot = (CategoryPlot) chart.getPlot();
  36. //设置横轴的字体
  37. CategoryAxis cateAxis = plot.getDomainAxis();
  38. cateAxis.setLabelFont(new Font("隶书", Font.BOLD + Font.ITALIC, 14));
  39. //设置纵轴的字体
  40. ValueAxis valueAxis= plot.getRangeAxis();
  41. valueAxis.setLabelFont(new Font("隶书", Font.BOLD + Font.ITALIC, 14));
  42. //说明部分的字体,对应于"aa","bb","cc","dd"的字体
  43. LegendTitle legend = chart.getLegend();
  44. legend.setItemFont(new Font("宋体", Font.BOLD + Font.ITALIC, 14));
  45. return chart;
  46. }
  47. public static JPanel createPanel(){
  48. JFreeChart chart = createChart(createCategory());
  49. return new ChartPanel(chart);
  50. }
  51. public static void main(String[] args) {
  52. TestJFreeChart2_1 chart = new TestJFreeChart2_1("某公司");
  53. chart.pack();
  54. chart.setVisible( true );
  55. }
  56. }

运行效果:

 

 3.保存JFreeChart生成的图片到本地磁盘

在第一部分中红色标记出添加代码:

 

  1. //保存为JPEG格式的图片
  2. // OutputStream os1 = new FileOutputStream("abcd.jpeg");
  3. // ChartUtilities.writeChartAsJPEG(os1 , chart , 800 , 600 );
  4. //保存为PNG格式的图片
  5. OutputStream os2 = new FileOutputStream("abcd.png");
  6. ChartUtilities.writeChartAsPNG( os2 , chart , 800 , 600 );

注:

保存成JPEG格式的图片被渲染上了一层橙色,PNG格式的图片没有被渲染

 

 4.在网页上显示JFreeChart生成的图片

 1.导入相关的包

 2.修改web.xml文件,添加如下代码:(该代码可以从API文档中获取)

  1.  <servlet>
  2. <servlet-name>DisplayChart</servlet-name>
  3. <servlet-class>
  4. org.jfree.chart.servlet.DisplayChart
  5. </servlet-class>
  6. </servlet>
  7. <servlet-mapping>
  8. <servlet-name>DisplayChart</servlet-name>
  9. <url-pattern>/DisplayChart</url-pattern>
  10. </servlet-mapping>

 

 

 3.新建jfreechart.jsp页面写入一下代码:

  1. <%@ page language="java" contentType="text/html; charset=GB18030"
  2. pageEncoding="GB18030"%>
  3. <%@ page import="org.jfree.data.general.DefaultPieDataset"%>
  4. <%@ page import="org.jfree.chart.JFreeChart"%>
  5. <%@ page import="org.jfree.chart.ChartFactory"%>
  6. <%@ page import="org.jfree.chart.plot.PiePlot"%>
  7. <%@ page import="java.awt.Font"%>
  8. <%@page import="org.jfree.chart.servlet.ServletUtilities;"%>
  9. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  10. <html>
  11. <head>
  12. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
  13. <title>Insert title here</title>
  14. </head>
  15. <body>
  16. <%
  17. %>
  18. <%
  19. DefaultPieDataset dpd = new DefaultPieDataset();
  20. dpd.setValue("管理人员"30);
  21. dpd.setValue("开发人员"50);
  22. dpd.setValue("销售人员"42);
  23. dpd.setValue("策划人员"15);
  24. JFreeChart chart = ChartFactory.createPieChart("公司人员分布图", dpd,
  25. truetruetrue);
  26. PiePlot plot = (PiePlot) chart.getPlot();
  27. plot.setLabelFont(new Font("隶书", Font.BOLD + Font.ITALIC, 14));
  28. //ChartFrame cf = new ChartFrame("某公司人员分布图", chart);
  29. //返回文件名filename,图片位于tomcat的临时目录下
  30. String fileName1 = ServletUtilities.saveChartAsPNG(chart, 800600, session);
  31. String url1 = request.getContextPath() + "/DisplayChart?filename=" +  fileName1;
  32. //String fileName2 = ServletUtilities.saveChartAsJPEG(chart , 800 , 600 , session );
  33. //String url2 = request.getContextPath() + "/DisplayChart?filename=" +  fileName2;
  34. %>
  35. <img src="<%= url1 %>" width="800" height="600"/>
  36. <br/>
  37. <br/>/
  38. </body>
  39. </html>

//注:我装的IE 7.0 不支持 JPEG格式的图片,支持PNG格式的图片

//但是 火狐浏览器支持JPEG与PNG格式的图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值