文章目录

  • 一、界面概览
  • 二、代码
  • 三、代码解释
  • 四、项目全部代码下载地址
  • 五、 项目代码说明
  • 六、功能更新:根据下拉单内容查询不同数据库
    • 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);}}
}

三、代码解释

  1. 首先,下面的代码是用来控制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. 连接数据库操作说明:
    (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超市进销存管理系统 所有代码

五、 项目代码说明

有关项目的代码说明:
项目结构如下图(有很多功能用不上了,有些就是仅仅界面,没有任何响应。):

说明:

  1. 下面这个是连接数据库,生成采购报表的代码代码: SalesStatisticFrame.java
    ``

  2. 下面这个是登录界面代码,Load_GUI.java

  3. 其他的界面可以根据类名,或者直接运行来看,时间有点儿久了,忘记了。。

大一写的代码,很乱很不完整,见谅见谅

项目文件地址:JavaGUI超市进销存管理系统 所有代码

六、功能更新:根据下拉单内容查询不同数据库

这部分的功能更新已经放到我上面发的项目内了

我们实现的就是“设备信息详情”GUI界面。我们这个设备是,零售机设备,每个零售机中存储不同的商品。实现的数据查询内容就是根据设备名称查询设备中的商品信息

另外两个界面,生成数据报表GUI代码没有贴出来。

6.1 界面概览

上面的级联查询GUI代码分别在项目中的 EquipGoodsTable.java ,EquipInfoTable.java,都已经更新了。有需要读者可以自行下载。JavaGUI超市进销存管理系统 所有代码

6.2 用到的主要控件

我们主要用的是JComboBox控件,主要用到的方法就是:

  1. jc1.getSelectedItem().toString(); //获取选择的下拉单的内容并转换成String类型。

  2. jc1.addItem(“设备1号”);
    jc1.addItem(“设备2号”);
    jc1.addItem(“设备3号”);
    jc1.addItem(“设备4号”);; //给下拉单添加内容选项。这里是死的,其实也可以从数据库中获取

  3. 细节,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显示表格(连接数据库)基础相关推荐

  1. 中职计算机应用基础word表格,计算机应用基础-word表格编辑.ppt

    计算机应用基础-word表格编辑.ppt (25页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 计算机应用基础 贵州交通职业技术学院 信息 ...

  2. matlab 显示表格化,[转载]matlab窗口中显示excel表格的问题

    刚刚在恒润论坛看到的,感觉还不错,跟踪中-- http://www.hirain.com/forum/dispbbs.asp?boardID=1&ID=301 % -------------- ...

  3. 表格在整个html居中显示,html 表格字符居中显示_如何在HTML中居中显示表格?

    html 表格字符居中显示_如何在HTML中居中显示表格? html 表格字符居中显示_如何在HTML中居中显示表格? html 表格字符居中显示 HTML table provides the ab ...

  4. R语言使用gt包和gtExtras包漂亮地显示表格数据:gtExtras包的gt_hulk_col_numeric函数对单列、多列数据进行着色、使用不同的调色板(color palette)对列着色

    R语言使用gt包和gtExtras包优雅地.漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解.gtExtras包的gt_hulk_col_numeric函数对单列.多列数据进行着色.使 ...

  5. R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解、使用gtExtras包添加一个图,显示表中某一列中的数字

    R语言使用gt包和gtExtras包优雅地.漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解.使用gtExtras包添加一个图,显示表中某一列中的数字 目录

  6. R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解、使用gtExtras包添加一个图,显示表中某一列中的数字、并为类型数据添加图像符号标签

    R语言使用gt包和gtExtras包优雅地.漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解.使用gtExtras包添加一个图,显示表中某一列中的数字.并为类型数据添加图像符号标签 目 ...

  7. R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gtExtras包添加一个图,显示表中某一列中的数字、并自定义表格数据显示的主题格式、并自定义数值数据的格式(例如百分比)

    R语言使用gt包和gtExtras包优雅地.漂亮地显示表格数据:使用gtExtras包添加一个图,显示表中某一列中的数字.并自定义表格数据显示的主题格式.并自定义数值数据的格式(例如百分比) 目录

  8. C# ListView控件显示表格(自适应宽度),添加 Checkbox,删除选择项,选中颜色和鼠标滑过背景变色

    本文转载自:http://www.liangshunet.com/ca/201309/586362553.htm 亮术网 2020-03-07 本网原创 DataGridView控件功能十分强大,显示 ...

  9. HTML设计显示表格

    HTML设计显示表格 表格在最初的HTML中,仅仅是用于存放各种数据的,因此,表格有很多与数据相关的标记,非常方便. <span style="font-size:24px;" ...

最新文章

  1. Google Map App 问题集锦
  2. Vue.js 学习笔记 第5章 内置指令
  3. Java 设计模式 -- 建造者模式
  4. MyBatis 分页插件 PageHelper
  5. Java解析JSON文件
  6. linux 那些事儿之我是 u 盘,《Linux那些事儿之我是USB》.PDF
  7. JDK8 Stream 操作
  8. 介绍一个python的新的web framework——karloop框架
  9. 探索大神科比,30000多次投篮数据,有好玩的发现
  10. input标签 各属性解释
  11. 高性能网络编程之 Reactor 网络模型(彻底搞懂)
  12. 2017年值得一看的7个APP设计
  13. 虚拟内存,物理内存,页面文件,还有任务管理器
  14. 服务器ip显示cdn,怎么查看cdn原服务器ip
  15. 安防工程属于计算机系统集成的文件,安防系统集成(工程)市场规模为960亿元
  16. 【Java】Java中文分词器Ansj的使用
  17. swagger2 description is deprecated
  18. as转html5工具,Flash资源转换工具
  19. python3 Requests+Sqlite+Pyquery断点下载小说爬虫
  20. 干货分享:在Windows下使用Visual Studio搭建C语言开发环境

热门文章

  1. 一个免费下拉关键词SEO小工具(持续更新中...)
  2. mtk平台 mt_usb设备以及otg初始过程
  3. Sublime Text 4 下 LaTeXtool 和 Latex-cwl 插件自动补全问题(补充)
  4. 普罗米修斯 mysql监控_普罗米修斯Prometheus监控MySQL
  5. java-bmi_Java中的BMI计算器
  6. Spring Boot||html页面的css等资源加载失败
  7. 企业IT项目开发之七宗罪(下篇)
  8. 51单片机——LED点阵屏(显示滚动画面)
  9. java 微信 摇一摇红包_如何开发微信摇一摇红包,摇一摇红包有什么作用
  10. Windows最常见的一些CMD命令