Struts2学习笔记18:JFreeChart

举报
wh_bn 发表于 2021/12/15 22:59:16 2021/12/15
【摘要】   Struts2学习笔记18:JFreeChart 第二十一,二十二讲 学习内容: 1.两个简单的JFreeChart实例 2.将JFreeChart生成的图片保存到本地磁盘上 3.在页面上显示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;import java.awt.Font;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartFrame;import org.jfree.chart.JFreeChart;import org.jfree.chart.plot.PiePlot;import org.jfree.data.general.DefaultPieDataset;public class TestJFreeChart1 {public static void main(String[] args) {//先为饼图准本数据 DefaultPieDataset dpd = new DefaultPieDataset();dpd.setValue( "管理人员" , 30 );dpd.setValue( "开发人员" , 50 );dpd.setValue( "销售人员" , 42 );dpd.setValue( "策划人员" , 15 ); //创建图表 //createPieChart(java.lang.String title, PieDataset dataset, boolean legend, boolean tooltips, boolean urls)  JFreeChart chart = ChartFactory.createPieChart( "公司人员分布图" , dpd , true , true , true );//获取plot PiePlot plot = (PiePlot)chart.getPlot();//设置plot的字体类型,即"管理人员","开发人员","销售人员","策划人员"的字体类型 //plot.setLabelFont(java.awt.Font font)  //public Font(String name, int style, int size) plot.setLabelFont(new Font("隶书", Font.BOLD + Font.ITALIC, 14));//ChartFrame(java.lang.String title, JFreeChart chart)  ChartFrame cf = new ChartFrame( "某公司人员分布图" , chart );        添加代码处cf.pack();cf.setVisible( true );}}

运行效果如图所示:

 

2.制作一个柱形图

  1. package test;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.axis.CategoryAxis;import org.jfree.chart.axis.ValueAxis;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.title.LegendTitle;import org.jfree.chart.title.TextTitle;import org.jfree.data.category.DefaultCategoryDataset;import org.jfree.ui.ApplicationFrame;public class TestJFreeChart2_1 extends ApplicationFrame{private static final long serialVersionUID = -3361537106012344957L;public TestJFreeChart2_1 ( String title){super(title);this.setContentPane(createPanel());}public static DefaultCategoryDataset createCategory() {DefaultCategoryDataset dcd = new DefaultCategoryDataset();dcd.setValue(10"aa""管理人员");dcd.setValue(25"bb""销售人员");dcd.setValue(38"cc""开发人员");dcd.setValue(40"dd""策划人员");return dcd;}public static JFreeChart createChart(DefaultCategoryDataset dcd) {JFreeChart chart = ChartFactory.createBarChart3D("公司人员分布图""人员分布","人员数量", dcd, PlotOrientation.VERTICAL, truefalsefalse);//设置chart的主题字体 chart.setTitle(new TextTitle("某公司人员分布图", new Font("隶书", Font.BOLD, 32)));CategoryPlot plot = (CategoryPlot) chart.getPlot();//设置横轴的字体 CategoryAxis cateAxis = plot.getDomainAxis();cateAxis.setLabelFont(new Font("隶书", Font.BOLD + Font.ITALIC, 14));//设置纵轴的字体 ValueAxis valueAxis= plot.getRangeAxis();valueAxis.setLabelFont(new Font("隶书", Font.BOLD + Font.ITALIC, 14));//说明部分的字体,对应于"aa","bb","cc","dd"的字体 LegendTitle legend = chart.getLegend();legend.setItemFont(new Font("宋体", Font.BOLD + Font.ITALIC, 14));return chart;}public static JPanel createPanel(){JFreeChart chart = createChart(createCategory());return new ChartPanel(chart);}public static void main(String[] args) {TestJFreeChart2_1 chart = new TestJFreeChart2_1("某公司");chart.pack();chart.setVisible( true );}}

运行效果:

 

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

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

 

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

注:

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

 

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

 1.导入相关的包

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

  1.  <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>/DisplayChart</url-pattern></servlet-mapping>

 

 

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

  1. <%@ page language="java" contentType="text/html; charset=GB18030"pageEncoding="GB18030"%><%@ page import="org.jfree.data.general.DefaultPieDataset"%><%@ page import="org.jfree.chart.JFreeChart"%><%@ page import="org.jfree.chart.ChartFactory"%><%@ page import="org.jfree.chart.plot.PiePlot"%><%@ page import="java.awt.Font"%><%@page import="org.jfree.chart.servlet.ServletUtilities;"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030"><title>Insert title here</title></head><body><%%><%DefaultPieDataset dpd = new DefaultPieDataset();dpd.setValue("管理人员"30);dpd.setValue("开发人员"50);dpd.setValue("销售人员"42);dpd.setValue("策划人员"15);JFreeChart chart = ChartFactory.createPieChart("公司人员分布图", dpd,truetruetrue);PiePlot plot = (PiePlot) chart.getPlot();plot.setLabelFont(new Font("隶书", Font.BOLD + Font.ITALIC, 14));//ChartFrame cf = new ChartFrame("某公司人员分布图", chart); //返回文件名filename,图片位于tomcat的临时目录下 String fileName1 = ServletUtilities.saveChartAsPNG(chart, 800600, session);String url1 = request.getContextPath() + "/DisplayChart?filename=" +  fileName1;//String fileName2 = ServletUtilities.saveChartAsJPEG(chart , 800 , 600 , session ); //String url2 = request.getContextPath() + "/DisplayChart?filename=" +  fileName2; %><img src="<%= url1 %>" width="800" height="600"/><br/><br/>/</body></html>

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

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

文章来源: blog.csdn.net,作者:fengda2870,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/fengda2870/article/details/3027361

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。