JavaGUI显示表格(连接数据库)基础
文章目录
- 一、界面概览
- 二、代码
- 三、代码解释
- 四、项目全部代码下载地址
- 五、 项目代码说明
- 六、功能更新:根据下拉单内容查询不同数据库
- 6.1 界面概览
- 6.2 用到的主要控件
- 七、其他相关博客
- 7.1 <a href="https://blog.csdn.net/SKMIT/article/details/106676478">Java窗体的创建,按钮的响应(最基础级别)
- 7.2 <a href="https://blog.csdn.net/SKMIT/article/details/118328398">JavaGUI开发实践:登录界面模拟(连接数据库)
- 7.3 项目全部代码下载地址
本人所作的其他相关博客:
Java窗体的创建,按钮的响应(最基础级别)
JavaGUI开发实践:登录界面模拟(连接数据库,不同身份用户进入不同界面)
这边建议各位使用快捷的窗体开发工具,JwindowBuilder,所有的窗体控件都是拖拽式的。具体使用各种博客都有。这里就不再赘述。
注意: 下面的代码不是很严谨,当时写的时候没注意,就是数据库连接使用完毕后,记得释放资源。
一、界面概览
获取数据库中的数据后,结果如图所示:
(1) 点击按钮“显示数据”后连接数据库信息:这里做的样例比较少。
(2) 点击"确定"或者取消以后,退出界面。
(3)点击“”取消按钮退出该界面。
以下是我的数据库信息:数据库版本为8.0.20
下面是数据库的变量名和数据类型。
一定要清楚自己数据库的各个量的数据类型,在后面获取结果集显示到表格中需要对应。
二、代码
package newGUI;import javax.swing.*;
import javax.swing.table.JTableHeader;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;public class SalesStatisticsFrame extends JFrame {private JScrollPane scpDemo;private JTableHeader jth;private JTable tabDemo;private JButton btnShow;private JButton bt1;private JButton bt2;{try {for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {if ("Nimbus".equals(info.getName())) {javax.swing.UIManager.setLookAndFeel(info.getClassName());break;}}} catch (Exception e) {System.out.println(e);}}public SalesStatisticsFrame() {super("生成采购报表"); //JFrame的标题名称this.setSize(660, 600); //控制窗体大小this.setLayout(null); //自定义布局this.setLocation(400, 100); //点击运行以后,窗体在屏幕的位置this.scpDemo = new JScrollPane();this.bt1 = new JButton("确定");this.bt2 = new JButton("取消");this.btnShow = new JButton("显示数据");this.bt1.setBounds(100, 480, 100, 30);this.bt2.setBounds(380, 480, 100, 30);this.scpDemo.setBounds(10, 50, 580, 400); //设置滚动框大小this.btnShow.setBounds(10, 10, 120, 30); //设置按钮this.btnShow.addActionListener(new ActionListener() //给“显示数据”按钮添加事件响应。{public void actionPerformed(ActionEvent ae) {btnShow_ActionPerformed(ae);}});/********按钮“确定”的响应*******/this.bt1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});/******按钮 “取消”的响应*****/this.bt2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});/******* 将组件加入到窗体中******/add(this.scpDemo);add(this.btnShow);add(this.bt1);add(this.bt2);this.setVisible(true);this.setDefaultCloseOperation(EXIT_ON_CLOSE);}public static void main(String[] args) {new SalesStatisticsFrame();}/***连接数据库并显示到表格中***/public void btnShow_ActionPerformed(ActionEvent ae) {try {Class.forName("com.mysql.cj.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/supermarket?serverTimezone=CTT";//注意设置时区String username = "root";String passwords = "Yuanfeng200517";Connection conn = DriverManager.getConnection(url, username, passwords);String sql = "select * from sellsreport";PreparedStatement pstm = conn.prepareStatement(sql);ResultSet rs = pstm.executeQuery();int count = 0;while (rs.next()) {count++;}rs = pstm.executeQuery();// 将查询获得的记录数据,转换成适合生成JTable的数据形式Object[][] info = new Object[count][6];String[] title = {"序号", "商品名称", " 商品数量", "成本价", "售价", "库存余量"};count = 0;while (rs.next()) {info[count][0] = Integer.valueOf(rs.getInt("id"));info[count][1] = rs.getString("name");info[count][2] = Integer.valueOf(rs.getInt("quantity"));info[count][3] = rs.getString("cost");info[count][4] = rs.getString("sellingprice");info[count][5] = rs.getString("strockmargin");count++;}// 创建JTablethis.tabDemo = new JTable(info, title);// 显示表头this.jth = this.tabDemo.getTableHeader();// 将JTable加入到带滚动条的面板中this.scpDemo.getViewport().add(tabDemo);} catch (ClassNotFoundException cnfe) {cnfe.printStackTrace();JOptionPane.showMessageDialog(null, "数据源错误", "错误", JOptionPane.ERROR_MESSAGE);} catch (SQLException sqle) {sqle.printStackTrace();JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);}}
}
三、代码解释
- 首先,下面的代码是用来控制Java GUI 风格的:整个try用一个大括号包起来就不会出错了。
{try {for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {if ("Nimbus".equals(info.getName())) {javax.swing.UIManager.setLookAndFeel(info.getClassName());break;}}} catch (Exception e) {System.out.println(e);}}
- 连接数据库操作说明:
(1) 首先连接数据库,连接以后用count变量存储数据库中有多少行。
Class.forName("com.mysql.cj.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/supermarket?serverTimezone=CTT";//注意设置时区String username = "root";String passwords = "Yuanfeng200517";Connection conn = DriverManager.getConnection(url, username, passwords);PreparedStatement pstm = conn.prepareStatement(sql);ResultSet rs = pstm.executeQuery();String sql = "select * from sellsreport";int count = 0;while(rs.next()){count++;}
用数组title来存储你想要显示的中的列属性名
String []title= {"序号","商品名称"," 商品数量","成本价","售价","库存余量"};
实际显示就是这样:
我们用一个二维数组来存储数据库中的二维表,
Object[][] info = new Object[count][6];
然后遍历结果集,将获取每行的数据:
count = 0; //这里要清零,因为后面count要从0加到数据库中的行数。while(rs.next()){info[count][0] = Integer.valueOf( rs.getInt("id")); //id是数据库中的变量名info[count][1] = rs.getString("name");info[count][2] = Integer.valueOf( rs.getInt("quantity") );info[count][3] = rs.getString("cost");info[count][4] = rs.getString("sellingprice");info[count][5] = rs.getString("strockmargin");count++;}
上面代码中:
如果数据库中变量是int型的,那么用 Integer.valueOf( rs.getInt("id"));
如果数据库中变量是string型的,那么用 rs.getString("sellingprice"); 引号内的字符是数据库中的变量名,必须和数据库的变量名称一样。
最后,我们把获得的数据变成表格的形式显示其中,JavaGUI用的是JTabel
// 创建JTablethis.tabDemo = new JTable(info,title);// 显示表头this.jth = this.tabDemo.getTableHeader();// 将JTable加入到带滚动条的面板中this.scpDemo.getViewport().add(tabDemo); }
项目全部代码下载地址: JavaGUI超市进销存管理系统 所有代码
四、项目全部代码下载地址
JavaGUI超市进销存管理系统 所有代码
五、 项目代码说明
有关项目的代码说明:
项目结构如下图(有很多功能用不上了,有些就是仅仅界面,没有任何响应。):
说明:
下面这个是连接数据库,生成采购报表的代码代码:
SalesStatisticFrame.java
``下面这个是登录界面代码,
Load_GUI.java
其他的界面可以根据类名,或者直接运行来看,时间有点儿久了,忘记了。。
大一写的代码,很乱很不完整,见谅见谅
项目文件地址:JavaGUI超市进销存管理系统 所有代码
六、功能更新:根据下拉单内容查询不同数据库
这部分的功能更新已经放到我上面发的项目内了
我们实现的就是“设备信息详情”GUI界面。我们这个设备是,零售机设备,每个零售机中存储不同的商品。实现的数据查询内容就是根据设备名称查询设备中的商品信息
。
另外两个界面,生成数据报表GUI代码没有贴出来。
6.1 界面概览
上面的级联查询GUI代码分别在项目中的 EquipGoodsTable.java
,EquipInfoTable.java
,都已经更新了。有需要读者可以自行下载。JavaGUI超市进销存管理系统 所有代码
6.2 用到的主要控件
我们主要用的是JComboBox控件
,主要用到的方法就是:
jc1.getSelectedItem().toString(); //获取选择的下拉单的内容并转换成String类型。
jc1.addItem(“设备1号”);
jc1.addItem(“设备2号”);
jc1.addItem(“设备3号”);
jc1.addItem(“设备4号”);; //给下拉单添加内容选项。这里是死的,其实也可以从数据库中获取细节,sql拼接字符串,将下拉单选中的内容拼接到sql语句中:注意单引号和双引号不要缺失,否则报语法错误。
geteqp=jc1.getSelectedItem().toString();
System.out.println(geteqp);
String sql = "select * from goods where belongs='"+geteqp+"'";
这里的belongs
是数据库中的字段名(就是数据库中列名)。
这里解释一下,为什么单引号中还要有双引号和+。这是因为,我们如果写到Navicat,使用SQL查询,可以这样写:
SELECT * FROM goods WHERE belongs=‘设备1号’;
也就是说,如果我们直接在Navicat查询,上面这个查询语句就是根据belongs值(belongs是varchar类型的)来查询。那么,如果要在Java语句中, 我们要将获取到的下拉单的值用String变量geteqp
存储,然后,为了避免将变量识别为字符串,我们就要加上转义字符"++",两个加号中间填的就是变量的名字,这样就不会将变量geteqp
识别为字符串了。所以最终的SQL查询语句是:
"SELECT * FROM goods WHERE belongs='"+geteqp+"'";
七、其他相关博客
7.1 Java窗体的创建,按钮的响应(最基础级别)
7.2 JavaGUI开发实践:登录界面模拟(连接数据库)
7.3 项目全部代码下载地址
有兴趣看整个项目代码的,可以看看下面的分享下面的链接。
JavaGUI超市进销存管理系统 所有代码
其实最主要的功能模块已经总结在我分享的博客和这个博客了,不过,这个系统还有很多需要实现的,上面分享的项目里面还有很多未完善的功能,各位可以自己去拓展一下,SQL语句真的很重要…
JavaGUI显示表格(连接数据库)基础相关推荐
- 中职计算机应用基础word表格,计算机应用基础-word表格编辑.ppt
计算机应用基础-word表格编辑.ppt (25页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 计算机应用基础 贵州交通职业技术学院 信息 ...
- matlab 显示表格化,[转载]matlab窗口中显示excel表格的问题
刚刚在恒润论坛看到的,感觉还不错,跟踪中-- http://www.hirain.com/forum/dispbbs.asp?boardID=1&ID=301 % -------------- ...
- 表格在整个html居中显示,html 表格字符居中显示_如何在HTML中居中显示表格?
html 表格字符居中显示_如何在HTML中居中显示表格? html 表格字符居中显示_如何在HTML中居中显示表格? html 表格字符居中显示 HTML table provides the ab ...
- R语言使用gt包和gtExtras包漂亮地显示表格数据:gtExtras包的gt_hulk_col_numeric函数对单列、多列数据进行着色、使用不同的调色板(color palette)对列着色
R语言使用gt包和gtExtras包优雅地.漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解.gtExtras包的gt_hulk_col_numeric函数对单列.多列数据进行着色.使 ...
- R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解、使用gtExtras包添加一个图,显示表中某一列中的数字
R语言使用gt包和gtExtras包优雅地.漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解.使用gtExtras包添加一个图,显示表中某一列中的数字 目录
- R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解、使用gtExtras包添加一个图,显示表中某一列中的数字、并为类型数据添加图像符号标签
R语言使用gt包和gtExtras包优雅地.漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解.使用gtExtras包添加一个图,显示表中某一列中的数字.并为类型数据添加图像符号标签 目 ...
- R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gtExtras包添加一个图,显示表中某一列中的数字、并自定义表格数据显示的主题格式、并自定义数值数据的格式(例如百分比)
R语言使用gt包和gtExtras包优雅地.漂亮地显示表格数据:使用gtExtras包添加一个图,显示表中某一列中的数字.并自定义表格数据显示的主题格式.并自定义数值数据的格式(例如百分比) 目录
- C# ListView控件显示表格(自适应宽度),添加 Checkbox,删除选择项,选中颜色和鼠标滑过背景变色
本文转载自:http://www.liangshunet.com/ca/201309/586362553.htm 亮术网 2020-03-07 本网原创 DataGridView控件功能十分强大,显示 ...
- HTML设计显示表格
HTML设计显示表格 表格在最初的HTML中,仅仅是用于存放各种数据的,因此,表格有很多与数据相关的标记,非常方便. <span style="font-size:24px;" ...
最新文章
- Google Map App 问题集锦
- Vue.js 学习笔记 第5章 内置指令
- Java 设计模式 -- 建造者模式
- MyBatis 分页插件 PageHelper
- Java解析JSON文件
- linux 那些事儿之我是 u 盘,《Linux那些事儿之我是USB》.PDF
- JDK8 Stream 操作
- 介绍一个python的新的web framework——karloop框架
- 探索大神科比,30000多次投篮数据,有好玩的发现
- input标签 各属性解释
- 高性能网络编程之 Reactor 网络模型(彻底搞懂)
- 2017年值得一看的7个APP设计
- 虚拟内存,物理内存,页面文件,还有任务管理器
- 服务器ip显示cdn,怎么查看cdn原服务器ip
- 安防工程属于计算机系统集成的文件,安防系统集成(工程)市场规模为960亿元
- 【Java】Java中文分词器Ansj的使用
- swagger2 description is deprecated
- as转html5工具,Flash资源转换工具
- python3 Requests+Sqlite+Pyquery断点下载小说爬虫
- 干货分享:在Windows下使用Visual Studio搭建C语言开发环境
热门文章
- 一个免费下拉关键词SEO小工具(持续更新中...)
- mtk平台 mt_usb设备以及otg初始过程
- Sublime Text 4 下 LaTeXtool 和 Latex-cwl 插件自动补全问题(补充)
- 普罗米修斯 mysql监控_普罗米修斯Prometheus监控MySQL
- java-bmi_Java中的BMI计算器
- Spring Boot||html页面的css等资源加载失败
- 企业IT项目开发之七宗罪(下篇)
- 51单片机——LED点阵屏(显示滚动画面)
- java 微信 摇一摇红包_如何开发微信摇一摇红包,摇一摇红包有什么作用
- Windows最常见的一些CMD命令