【知了堂学习笔记】JfreeChart制作一些简单的报表
2017-09-07 18:15
686 查看
利用JfreeChart 制作报表,JfreeChart是是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,JfreeChart可以生成饼图(pie charts)、柱状图(bar charts)、散点图(scatterplots)、时序图(time series)、甘特图(Gantt
charts)等,
在制作报表之前首先需要导入 jcommon-1.0.23.jar 和 jfreechart.jar 两个jar包。
一、饼图
制作一个简单的饼图只需要几个步骤:
1. 创建数据源 DefaultPieDataset
2. 创建绘制图像的类JfreeChart
3. 设置一下图像的简单的格式
这是一个简单的饼图
下面是一个3D的饼图,只需要创建饼图的时候为3D就行了
JFreeChart chart = ChartFactory.createPieChart3D("材料数据图", dpt, true, true, false)
这是一个3D饼图,并设置一个透明的效果,在材料的名称旁加入了一个百分比数值。
柱状图:
制作柱状图的步骤和饼图的步骤一样。
因为这是一个通过连接数据库,将表的内容输出成报表,所以报表的内容是用的数据库的,简单报表的内容可以自己设定,不用连接数据库,用setvalue() 来设置内容。
数据库的连接:
package jfree.model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import jfree.dao.jfreeDao;
public class jfreeimpl implements jfreeDao {
private final static String USER_NAME = "root";
private final static String PASSWORD = "123456";
private final static String URL = "jdbc:mysql://localhost:3306/test";
private final static String Driver = "com.mysql.jdbc.Driver";
public jfreeimpl() {
try {
Class.forName(Driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public List<MaterModel> getshow() {
String mysql = "select * from materialform";
Connection conn = null;
List<MaterModel> list = null;
try {
conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
QueryRunner queryRunner = new QueryRunner();
list = queryRunner.query(conn, mysql, new BeanListHandler<>(MaterModel.class));
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
charts)等,
在制作报表之前首先需要导入 jcommon-1.0.23.jar 和 jfreechart.jar 两个jar包。
一、饼图
制作一个简单的饼图只需要几个步骤:
1. 创建数据源 DefaultPieDataset
2. 创建绘制图像的类JfreeChart
3. 设置一下图像的简单的格式
这是一个简单的饼图
下面是一个3D的饼图,只需要创建饼图的时候为3D就行了
JFreeChart chart = ChartFactory.createPieChart3D("材料数据图", dpt, true, true, false)
package jfree; import java.awt.Color; import java.awt.Font; import java.io.IOException; import java.io.OutputStream; import java.sql.DriverManager; import java.sql.ResultSet; import java.text.NumberFormat; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardChartTheme; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.block.BlockBorder; import org.jfree.chart.labels.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PiePlot; import org.jfree.chart.title.TextTitle; import org.jfree.data.general.DefaultPieDataset; import org.jfree.util.Rotation; import com.mysql.jdbc.PreparedStatement; import jfree.dao.jfreeDao; import jfree.model.MaterModel; import jfree.model.jfreeimpl; /** * Servlet implementation class jfreetest */ @WebServlet("/jfreetest") public class jfreetest extends HttpServlet { private static final long serialVersionUID = 1L; private jfreeDao jf = new jfreeimpl(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<MaterModel> list = jf.getshow(); DefaultPieDataset dpt = new DefaultPieDataset(); for (MaterModel ma : list) { dpt.setValue(ma.getMaterial_name(), ma.getMaterial_number()); } //设置中文乱码 StandardChartTheme standardChartTheme = new StandardChartTheme("CN"); standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 20)); standardChartTheme.setRegularFont(new Font("宋书", Font.PLAIN, 15)); standardChartTheme.setLargeFont(new Font("宋书", Font.PLAIN, 15)); ChartFactory.setChartTheme(standardChartTheme); //设置背景颜色 standardChartTheme.setChartBackgroundPaint(new Color(176,224,230)); standardChartTheme.setPlotBackgroundPaint(new Color(176,224,230)); standardChartThem 4000 e.setPlotOutlinePaint(new Color(176,224,230)); // 创建饼状图,第一个参数是标题,第二个参数是一个数据集,第三个参数表示是否显示Legend,第四个参数表示是否显示提示,第五个参数表示图中是否存在URL JFreeChart chart = ChartFactory.createPieChart3D("材料数据图", dpt, true, true, false); chart.getLegend().setFrame(new BlockBorder(Color.WHITE)); //设置显示百分比 PiePlot pieplot = (PiePlot) chart.getPlot(); pieplot.setLabelFont(new Font("宋体", 0, 15)); StandardPieSectionLabelGenerator standarPieIG = new StandardPieSectionLabelGenerator("{0}:({1},{2})", NumberFormat.getNumberInstance(), NumberFormat.getPercentInstance()); pieplot.setLabelGenerator(standarPieIG); pieplot.setLabelOutlinePaint(null); //设置旋转角度 pieplot.setStartAngle(180.0); //设置旋转方向,Rotation.CLOCKWISE)为顺时针。 pieplot.setDirection(Rotation.CLOCKWISE); //设置图表透明图0.0~1.0范围。0.0为完全透明,1.0为完全不透明。 pieplot.setForegroundAlpha(0.7F); //输出流 OutputStream os = response.getOutputStream(); response.setContentType("image/jpeg"); ChartUtilities.writeChartAsJPEG(os, chart, 650, 500); } }
这是一个3D饼图,并设置一个透明的效果,在材料的名称旁加入了一个百分比数值。
柱状图:
package jfree; import java.awt.Color; import java.awt.Font; import java.io.IOException; import java.io.OutputStream; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.swing.JPanel; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardChartTheme; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.block.BlockBorder; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.chart.title.TextTitle; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.ApplicationFrame; import com.mysql.jdbc.PreparedStatement; import jfree.dao.jfreeDao; import jfree.model.MaterModel; import jfree.model.jfreeimpl; @WebServlet("/jfreetest2") public class jfreetest2 extends HttpServlet { private jfreeDao jf = new jfreeimpl(); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<MaterModel> list = jf.getshow(); DefaultCategoryDataset dataset = new DefaultCategoryDataset(); for (MaterModel ma : list) { dataset.setValue(ma.getMaterial_number(), ma.getMaterial_supplier(),ma.getMaterial_name()); } StandardChartTheme standardChartTheme = new StandardChartTheme("CN"); standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 20)); standardChartTheme.setRegularFont(new Font("宋书", Font.PLAIN, 15)); standardChartTheme.setLargeFont(new Font("宋书", Font.PLAIN, 15)); ChartFactory.setChartTheme(standardChartTheme); standardChartTheme.setChartBackgroundPaint(new Color(176,224,230)); standardChartTheme.setPlotBackgroundPaint(new Color(176,224,230)); standardChartTheme.setPlotOutlinePaint(new Color(176,224,230)); JFreeChart chart = ChartFactory.createBarChart("hi", "材料分类", "材料数量", dataset, PlotOrientation.VERTICAL, true, true, false); // 创建一个JFreeChart chart.getLegend().setFrame(new BlockBorder(Color.WHITE)); chart.setTitle(new TextTitle("材料数据图", new Font("宋体", Font.BOLD , 15)));// 可以重新设置标题,替换“hi”标题 CategoryPlot plot = (CategoryPlot) chart.getPlot();// 获得图标中间部分,即plot CategoryAxis categoryAxis = plot.getDomainAxis();// 获得横坐标 categoryAxis.setLabelFont(new Font("微软雅黑", Font.BOLD, 12)); // 设置横坐标字体 BarRenderer barrenderer = new BarRenderer(); barrenderer.setMaximumBarWidth(0.5); barrenderer.setItemMargin(0.0); plot.setRenderer(barrenderer); OutputStream os = response.getOutputStream(); response.setContentType("image/jpeg"); ChartUtilities.writeChartAsJPEG(os, chart, 600, 500); } }
制作柱状图的步骤和饼图的步骤一样。
因为这是一个通过连接数据库,将表的内容输出成报表,所以报表的内容是用的数据库的,简单报表的内容可以自己设定,不用连接数据库,用setvalue() 来设置内容。
数据库的连接:
package jfree.model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import jfree.dao.jfreeDao;
public class jfreeimpl implements jfreeDao {
private final static String USER_NAME = "root";
private final static String PASSWORD = "123456";
private final static String URL = "jdbc:mysql://localhost:3306/test";
private final static String Driver = "com.mysql.jdbc.Driver";
public jfreeimpl() {
try {
Class.forName(Driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public List<MaterModel> getshow() {
String mysql = "select * from materialform";
Connection conn = null;
List<MaterModel> list = null;
try {
conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
QueryRunner queryRunner = new QueryRunner();
list = queryRunner.query(conn, mysql, new BeanListHandler<>(MaterModel.class));
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
相关文章推荐
- 【知了堂学习笔记】Java中static关键字的一些简单使用方法
- 【知了堂学习笔记】jfreechart创建简单的柱状图和饼图
- 学习笔记1--用jQuery制作简单的弹窗(可复用)
- java学习笔记之 jfreechart报表,饼形图,用swing画
- Houdini SHOP学习笔记3 制作简单山体模型并制作简单材质
- [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第2讲(对象的实现及全局变量的定义)
- 【知了堂学习笔记】Nginx+Tomcat实现简单负载均衡
- Xcode9学习笔记40 - 使用UITableView制作简单表格
- [知了堂学习笔记]网络编程扩展_实现简单的聊天室功能
- 润乾报表学习一:制作最简单的报表
- cpp学习笔记 1一个简单的小程序以及一些的知识点
- 【Unity 3D】学习笔记29:游戏的例子——简单的小制作地图
- 【Unity 3D】学习笔记二十九:游戏实例——简单小地图制作
- {传智播客} (学习笔记)--通过一些简单案例,了解Oracle存储过程编写和调用
- 我的学习笔记(SQL简单的注入)(1) 手工注入以及注入一些常用语句
- JasperReport学习笔记2-创建简单的报表例子
- node.js在windows下的学习笔记(2)---简单熟悉一些命令
- vue.js 学习笔记 制作简单的todo list
- JasperReport学习笔记2-创建简单的报表例子
- DayDayUP之HTML5学习笔记四----使用Video标签制作简单的播放器