从数据库表中读取简单的数据,然后 JFreeChart 使用这些数据来创建图表。
10.1 测试数据
10.2 基于swing的应用
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.io.IOException;
import java.sql.*;
public class LineChart {
public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {
//连接数据库
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/myDB";
String username="root";
String password="admin";
Connection con= DriverManager.getConnection(url,username,password);
Statement statement=con.createStatement();
ResultSet rs=statement.executeQuery("select name,age from Students");
//创建数据集
DefaultCategoryDataset dataset=new DefaultCategoryDataset();
while(rs.next()){
dataset.setValue(
rs.getInt("age"),
"年龄",
rs.getString("name")
);
}
// 创建简单的条形图
JFreeChart freeChart=ChartFactory.createBarChart(
"学生信息",// 图表标题
"姓名",
"年龄",
dataset,//数据集,即要显示在图表上的数据
PlotOrientation.VERTICAL,
true,//是否显示图例
false,//是否显示提示
false//是否生成URL连接
);
//以面板显示,创建一个图表面板
ChartPanel chartPanel=new ChartPanel(freeChart);
//设置大小
chartPanel.setPreferredSize(new java.awt.Dimension(560,400));
//创建一个主窗口来显示面板
JFrame frame=new JFrame("条形图");
frame.setLocation(500,400);
frame.setSize(600,500);
//将图表面板设置为主窗口的内容面板
frame.setContentPane(chartPanel);
//显示主窗口
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
结果展示:
10.3 创建图像
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.*;
public class Chart {
public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {
//连接数据库
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/myDB";
String username="root";
String password="admin";
Connection con= DriverManager.getConnection(url,username,password);
Statement statement=con.createStatement();
ResultSet rs=statement.executeQuery("select name,age from Students");
//创建数据集
DefaultCategoryDataset dataset=new DefaultCategoryDataset();
while(rs.next()){
dataset.setValue(
rs.getInt("age"),
"年龄",
rs.getString("name")
);
}
// 创建简单的条形图
JFreeChart freeChart=ChartFactory.createBarChart(
"学生信息",// 图表标题
"姓名",
"年龄",
dataset,//数据集,即要显示在图表上的数据
PlotOrientation.VERTICAL,
true,//是否显示图例
false,//是否显示提示
false//是否生成URL连接
);
//使用输出流输出图表文件
//输出JPG文件
OutputStream os=new FileOutputStream("c:/picture.jpg");
ChartUtilities.writeChartAsJPEG(os,freeChart,500,500);
//输出PNG文件
OutputStream os_png=new FileOutputStream("c:/pictrue_png.png");
ChartUtilities.writeChartAsPNG(os_png,freeChart,500,500);
}
}
结果展示: