JavaGUI显示表格(连接数据库)基础

article/2025/11/1 6:04:54

文章目录

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


http://chatgpt.dhexx.cn/article/wCc0ScED.shtml

相关文章

Java-GUI简介

JavaSwing-GUI开发简介&#xff08;1&#xff09; 本期介绍一些GUI的基本知识&#xff0c;开发GUI程序的时候直接用windowbuilder生成框架&#xff0c;傻瓜式拖拽就行&#xff0c;非常简单。 一、布局管理器 1.1:FlowLayout(流式布局) 1.2:GridLayout(网格布局) 1.3:Grid…

Java:GUI编程

文章目录 GUI编程AWT一、AWT介绍二、组件和容器(Component和Container)2.1.Frame2.2.Panel 三、布局管理器3.1.第一种布局管理器——FlowLayout3.2.第二种布局管理器——BorderLayout3.3.第三种布局管理器——GridLayout&#xff08;表格布局管理器&#xff09;3.4.布局练习 四…

Java GUI编程

GUI&#xff08;Graphical User Interface&#xff09;即图形用户界面&#xff0c;它能够使应用程序看上去更加友好。 Swing概述 Swing是纯Java组件&#xff0c;使得应用程序在不同的平台上运行时具有相同外观和相同的行为。 Swing中的大部分组件类位于javax.swing包中。 Sw…

Java GUI入门教程

人生的烦恼&#xff0c;多在于知道的太多&#xff0c;而做的太少。 Java程序中开发GUI页面。下面我主要对Java中实现图像管理、图形绘制和颜色管理等做出介绍&#xff0c;与此同时&#xff0c;Swing包也做出一部分介绍。 像素与坐标 用于表示图像像素数目的称为图像分辨率。显…

【JAVA】GUI编程

GUI的概念 Swing概述 容器组件 布局管理器 常用组件 事件处理 对话框 GUI的概念 GUI&#xff08;Graphical User Interface&#xff09;即图形用户界面&#xff0c;它能够使应用程序使用起来更加便捷&#xff0c;看上去更加友好。 Swing概述 Swing是纯Java组件&#xff0c;使得…

Java--GUI编程

目录 GUI的概念 Swing概述 ​编辑 容器组件 布局管理器 常用组件 对话框 内部类 GUI的概念 GUI&#xff08;Graphics User Interface&#xff09;&#xff0c;图形用户界面&#xff0c;是指采用图形方式显示的计算机操作用户界面&#xff0c;是计算机与其使用者之间的…

GUI编程(java)

1 GUI的概念 GUI&#xff08;Graphical User Interface&#xff09;即图形用户界面&#xff0c;它能够使应用程序看上去更加友好&#xff0c;更加方便用户操作。 2 Swing概述 Swing是纯Java组件&#xff0c;使得应用程序在不同的平台上运行时具有相同外观和相同的行为&#x…

Java GUI 开发

Swing图形用户界面 GUI 图形用户界面&#xff08;Graphical User Interface&#xff0c;简称 GUI&#xff0c;又称图形用户接口&#xff09;是指采用图形方式显示的计算机操作用户界面&#xff0c;包括窗口、菜单、按钮等各种屏幕组件。 Swing Swing是JAVA的一个GUI工具包&a…

GUI (java)

GUI 一.GUI概念二.Swing概述三.容器组件四.常用容器1.窗体(1) JFrame类的构造方法(2) JFrame类的常用方法 2.面板(1)JPanel类的构造方法(2)JPanel类的常用方法 五.布局管理器1. FlowLayout 流式布局(1)FlowLayout构造方法 2.BorderLayout 边界布局3.GridLayout 网格布局 六.常用…

javaGUI

GUI 1.GUI的概念&#xff1a; GUI&#xff08;Graphical User Interface&#xff09;即图形用户界面&#xff0c;它能够使应用程序看上去更加友好&#xff1b; 2.Swing概述&#xff1a; Swing是纯Java组件&#xff0c;使得应用程序在不同的平台上运行时具有相同外观和相同的行…

GUI(java)

GUI基本介绍&#xff1a; 1.GUI是什么&#xff1f; GUI的全称为Graphical User Interface&#xff0c;图形化界面或图形用户接口&#xff0c;是指采用图形方式显示 的计算机操作环境用户接口。与早期计算机使用的命令行界面相比&#xff0c;图形界面对于用户来说更为简 便易用。…

Java中的GUI

记录Java中的GUI知识&#xff0c;Java中的GUI相关编程思想是需要我们去理解和掌握的。最好可以使用基础的swing组件去构建出界面。完整记录使用swing组件进行登录页面开发&#xff0c;提供完整代码 文章目录 前言一、swing组件二、swing组件的使用1.窗口2.面板 三、swing组件的…

Java之GUI简单介绍

GUI介绍&#xff08;一&#xff09;常见的组件及简单监听器 第一个窗口程序容器控件JLabel控件简单事件处理文本框JTextFiled复选框JCheckBox下拉列表JComboBox布局管理器LayoutManager边界布局管理器BorderLayout手工布局 前段时间学了GUI&#xff0c;总体上概念还是有点模糊&…

JAVA GUI(图形用户界面)

1.GUI概述 目前,我们编写的程序都是基于控制台的程序GUI&#xff08;Graphical User Interface&#xff09;即图形用户界面&#xff0c;它能够使应用程序看上去更加友好 2.Swing概念 位于javax.swingSwing是纯java组件,使得应用在不同平台中有相同的外观和行为 3.什么是组件,…

Java——GUI(图形用户界面)

学习目标&#xff1a; 1、掌握布局管理器、AWT事件处理机制以及常用事件 2、熟悉Swing组件的使用 3、了解GUI开发的相关原理和技巧 GUI全称是GraphicalUser Interface&#xff0c;即图形用户界面。顾名思义&#xff0c;就是应用程序提供给用户操作的图形界面&#xff0c;包括…

Java GUI——Java图形用户界面

Java GUI——Java图形用户界面 1、Java GUI概述 1.1、GUI的前世今生 早期&#xff0c;电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面&#xff08;CLI&#xff09;”。如&#xff1a;Windows中的DOS窗口。后来&#xff0c;Apple公司率先在电脑的操作系统中实现了图…

APIGateway 简介

1. APIGateway是什么 APIGateway 即API网关&#xff0c;所有请求首先会经过这个网关&#xff0c;然后到达后端服务&#xff0c;有点类似于Facade模式。API网关作为系统接口对外的统一出口&#xff0c;可以减少调用方对服务实现的感知。 没有API网关时的结系统构如下图&#xff…

aws api gateway 创建一个REST API作为Amazon S3代理

你可能想把样本API导入为Amazon S3的代理&#xff0c;如样本API作为Amazon S3代理的OpenAPI定义所示。关于如何使用OpenAPI定义导入API的说明&#xff0c;请参阅使用OpenAPI配置REST API。 创建API资源来代表Amazon S3资源 我们将使用API的根&#xff08;/&#xff09;资源作…

【AWS系列】第七讲: AWS Serverless之API Gateway

目录 序言 一、基本介绍 1.1 RESTful API 1.2 HTTP API 1.3 WebSocket API 2、使用介绍 2.1 新建 2.2 选类型 2.3 点击构建 2.4 输入参数 2.5 点击创建 2.6 新建方法 2.6 方法测试 三、总结 序言 初步研究一下API Gateway&#xff0c;加油 一、基本介绍 Amazon AP…

一文搞懂 Service Mesh 和 API Gateway 关系和区别

公众号关注 「奇妙的 Linux 世界」 设为「星标」&#xff0c;每天带你玩转 Linux &#xff01; 关于Service Mesh和API Gateway之间的关系&#xff0c;这个问题过去两年间经常被问起&#xff0c;社区也有不少文章和资料给出解答。其中不乏 Christian Posta 这样的网红给出过深度…