1 概述

一个简单的Swing登录界面,使用了简单的JDBC

如图:

2 UI

2.1 主界面

主界面使用了31网格布局+三个JPanel,中间的JPanel使用了22网格布局:

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.util.Enumeration;
import java.awt.Container;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;public class UserManagement
{private JFrame mainFrame = new JFrame("登录");private Container container = mainFrame.getContentPane();private JLabel titleLabel = new JLabel("登录/注册", JLabel.CENTER);private JPanel inputField = new JPanel();private JLabel usernameLabel = new JLabel("用户名:", JLabel.CENTER);private JTextField username = new JTextField();private JLabel passwordLabel = new JLabel("密码:", JLabel.CENTER);private JPasswordField password = new JPasswordField();private JPanel buttonField = new JPanel();private JButton save = new JButton("登录/注册");private JButton cancel = new JButton("取消");public UserManagement(){init();setFont(new Font("微软雅黑",Font.PLAIN,14));addEvent();}private void init(){container.setLayout(new GridLayout(3, 1, 0, 10));container.add(titleLabel);inputField.setLayout(new GridLayout(2, 2, 5, 5));inputField.add(usernameLabel);inputField.add(username);inputField.add(passwordLabel);inputField.add(password);container.add(inputField);buttonField.setLayout(new FlowLayout(FlowLayout.CENTER,20,0));buttonField.add(save);buttonField.add(cancel);container.add(buttonField);mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);mainFrame.setSize(300, 200);mainFrame.setLocationRelativeTo(null);mainFrame.setVisible(true);}private void setFont(Font font){FontUIResource fontRes = new FontUIResource(font);for(Enumeration<Object> keys = UIManager.getDefaults().keys();keys.hasMoreElements();){Object key = keys.nextElement();Object value = UIManager.get(key);if(value instanceof FontUIResource)UIManager.put(key, fontRes);}}private void addEvent(){save.addActionListener(e->{User user = new User();user.setName(username.getText());user.setPassword(new String(password.getPassword()));if(DBUtils.exists(user))new UserInformation(DBUtils.getByName(user.getName()));elseJOptionPane.showConfirmDialog(null,"添加"+(DBUtils.add(user) ? "成功" : "失败"), "",JOptionPane.CLOSED_OPTION);});cancel.addActionListener(e->{mainFrame.dispose();});}public static void main(String[] args){new UserManagement();}
}

重点说一下这些代码:

mainFrame.setLocationRelativeTo(null);

使整个JFrame处于屏幕水平居中与垂直居中位置。

private void setFont(Font font)
{FontUIResource fontRes = new FontUIResource(font);for(Enumeration<Object> keys = UIManager.getDefaults().keys();keys.hasMoreElements();){Object key = keys.nextElement();Object value = UIManager.get(key);if(value instanceof FontUIResource)UIManager.put(key, fontRes);}
}

设置所有组件的字体。

cancel.addActionListener(e->{mainFrame.dispose();}
);

按钮添加关闭窗口事件。

JOptionPane.showConfirmDialog(null,"添加"+(DBUtils.add(user) ? "成功" : "失败"), "",JOptionPane.CLOSED_OPTION);

提示信息框。

2.2 用户信息界面

用户信息界面采用了31网格,同样3个JPanel,中间的JPanel布局为32网格。

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.util.Enumeration;
import java.awt.Container;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;public class UserInformation
{private JFrame mainFrame = new JFrame("用户信息");private Container container = mainFrame.getContentPane();private JLabel titleLabel = new JLabel("用户信息", JLabel.CENTER);private JPanel inputField = new JPanel();private JLabel idLabel = new JLabel("Id",JLabel.CENTER);private JTextField id = new JTextField();private JLabel usernameLabel = new JLabel("Username", JLabel.CENTER);private JTextField username = new JTextField();private JLabel passwordLabel = new JLabel("Password", JLabel.CENTER);private JPasswordField password = new JPasswordField();private JPanel buttonField = new JPanel();private JButton update = new JButton("更新");private User user;public UserInformation(User user){if(user == null)mainFrame.dispose();this.user = user;init();setFont(new Font("微软雅黑", Font.PLAIN, 14));addEvent();}private void init(){container.setLayout(new GridLayout(3,1,0,10));container.add(titleLabel);inputField.setLayout(new GridLayout(3,2,0,3));inputField.add(idLabel);inputField.add(id);id.setText(user.getId());id.setEditable(false);inputField.add(usernameLabel);username.setText(user.getName());inputField.add(username);inputField.add(passwordLabel);password.setText(user.getPassword());inputField.add(password);container.add(inputField);buttonField.setLayout(new FlowLayout());buttonField.add(update);container.add(buttonField);mainFrame.setVisible(true);mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);mainFrame.setLocationRelativeTo(null);mainFrame.setSize(300,250);}private void setFont(Font font){FontUIResource fontRes = new FontUIResource(font);for (Enumeration<Object> keys = UIManager.getDefaults().keys(); keys.hasMoreElements();){Object key = keys.nextElement();Object value = UIManager.get(key);if (value instanceof FontUIResource)UIManager.put(key, fontRes);}}private void addEvent(){update.addActionListener(e->{user.setName(username.getText());user.setPassword(new String(password.getPassword()));JOptionPane.showConfirmDialog(null, "更新"+(DBUtils.modify(user) ? "成功" : "失败"),"确认",JOptionPane.CLOSED_OPTION);});}
}

这个JFrame不能设置EXIT_ON_CLOSE,因为这不是"主窗体",不然的话点击关闭主窗体也没了。

mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

3 数据库操作

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;public class DBUtils
{private final static String driver = "com.mysql.cj.jdbc.Driver";private final static String username = "aa";private final static String password = "123456";private final static String url = "jdbc:mysql://127.0.0.1/user_test";private final static String insert = "insert into user(id,username,password) values(?,?,?)";private final static String update = "update user set username = ?,password = ? where id = ?";private final static String delete = "delete from user where id = ?";private final static String select = "select * from user where username = ?";private static Connection connection;static{try{Class.forName(driver);connection = DriverManager.getConnection(url,username,password);}catch(Exception e){e.printStackTrace();connection = null;}}public static boolean exists(User user){try{PreparedStatement exist = connection.prepareStatement(select);exist.setString(1,user.getName());ResultSet existResult = exist.executeQuery();return existResult.next();}catch (SQLException e){e.printStackTrace();return false;}}public static boolean add(User user){try{PreparedStatement add = connection.prepareStatement(insert);user.setId(UUID.randomUUID().toString().substring(0, 8));add.setString(1, user.getId());add.setString(2, user.getName());add.setString(3, user.getPassword());return add.executeUpdate() == 1;}catch (SQLException e){e.printStackTrace();return false;}}public static boolean modify(User user){try{PreparedStatement modify = connection.prepareStatement(update);System.out.println(user.getName());modify.setString(1, user.getName());modify.setString(2, user.getPassword());modify.setString(3, user.getId());return modify.executeUpdate() == 1;}catch (SQLException e){e.printStackTrace();return false;}}public static boolean delete(User user){if(exists(user)){try{PreparedStatement del = connection.prepareStatement(delete);del.setString(1, user.getId());return del.executeUpdate() == 1;}catch (SQLException e){e.printStackTrace();}}return false;}public static User getByName(String name){try{PreparedStatement exist = connection.prepareStatement(select);exist.setString(1, name);ResultSet existResult = exist.executeQuery();if(existResult.next()){User user = new User();user.setId(existResult.getString("id"));user.setName(existResult.getString("username"));user.setPassword(existResult.getString("password"));return user;}return null;}catch (SQLException e){e.printStackTrace();return null;}}
}

注册驱动后,增删查改,就是注意一下MySQL版本与驱动名对应。

4 完整代码

  • Github
  • 码云

Java简单的用户登录界面+MySQL相关推荐

  1. 一个简单的用户登录界面

    今天我们学习了如何实现一个简单的用户登陆界面,具体要用到两个jsp和一个servlet,具体操作如下: 首先创建一个用户登录界面,inputview.jsp,其源代码如下所示: <!DOCTYP ...

  2. php简单的登录界面,PHP实现简单用户登录界面

    用PHP实现简单的用户登录界面,供大家参考,具体内容如下 首先要实现用户登录界面需要一个html登录表单 用户名: 密码: 重复密码: 然后开始按照流程图写PHP代码 if(trim($_POST[' ...

  3. idea中创建maven依赖下的web工程(一)----用户登录界面

    如果你对idea中创建maven依赖下的web工程不是很了解,请参见上一篇博客--idea中创建maven依赖下的第一个web工程 各路大神对于idea的基本操作已经非常的熟悉了, 嗯,我还是一只入门 ...

  4. 【Android】用户登录界面功能实现:登陆跳转、退出

    文章目录 用户登录界面功能实现:登陆跳转.退出 ♦ 回顾 ♦ 编写 MainActivity 实现功能 登录功能效果 退出弹框.连续点击返回退出 ♦ 设计 activity_my_tool.xml 展 ...

  5. Bootstrap4+MySQL前后端综合实训-Day06-AM【eclipse详细配置Tomcat、开发web项目、servlet、连接MySQL8.0数据库、用户登录界面的编写与验证、分页查询】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 eclipse重置视图 MySQL数据库--建数据库.建数据库 s ...

  6. java写一个登录系统_用java写一个用户登陆界面

    一.课堂测试源代码及其结果截图 用java的swing写一个用户登录界面,采用网格布局.源代码如下: /** * */ package LiuLijia; import java.awt.CardLa ...

  7. java用户登录界面并连接数据库(教师工资查询)

    java用户登录界面并连接数据库(教师工资查询) 环境 语言:Java:数据库:MySql:环境:JDK8+Eclipse 步骤 1.数据库设计 要求: 实现: 2.实现该教师工资表管理所设计的类和文 ...

  8. 简单步骤,使用 Android studio 实现保存 QQ 账号密码,和简易 QQ 用户登录界面

    利用 Android studio 2021 软件输出一个简易用户登录界面,拥有头像并且能够实现对自行输入的账号密码进行保存,文件名为 saveqq,功能实现对账号与密码的输入和存储,简单QQ界面布局 ...

  9. JAVA——创建用户登录界面

    创建用户登录界面 1.新建超市管理系统 File-new-project-java-java project,创建项目名:SupermarketClient. 2.在Supermarket下面创建两个 ...

最新文章

  1. 分布式RPC框架性能大比拼
  2. python语音信号处理_现代语音信号处理笔记 (一)
  3. 利用WSS搭建学生作业平台
  4. 二、SpringMVC的常用注解——1-@Controller
  5. 11-17的学习总结(DOMfirstday)
  6. 网格弹簧质点系统模拟(Spring-Mass System by Verlet Integration)附源码
  7. Swagger扩展为你添油加气
  8. akka使用_使用Akka简化交易系统
  9. WPF 实现水纹效果
  10. 解决bootstrap-table表头filter-control select控件被遮挡显示不全的问题
  11. 服务器监视Zabbix 5.0 - 安装部署
  12. java销毁servlet_「销毁session」Servlet销毁session - seo实验室
  13. miui10,miui11,miui12 rom下载,支持市面常见机型
  14. SPSS安装过程中无法创建Java虚拟机的解决方法
  15. Nacos 学习笔记:安装运行初体验
  16. 轻量级神经网络架构综述
  17. linux清理unbuntu无用空间,如何给Ubuntu系统清理垃圾
  18. java文本域_Java Swing JTextArea:文本域组件
  19. 杨家将杨业四子杨延辉子嗣传人世代居住松滋
  20. 108个Python精选库,看完收获丰富

热门文章

  1. win10怎么设置外接摄像头_Win10系统外接摄像头无法打开的解决方案
  2. display:agl-compositor
  3. 德国应用计算机科学,2021德国计算机科学与技术专业大学排名TOP10
  4. android tv 库,Android TV Leanback 简介
  5. 13.HTML背景、背景渐变、盒子阴影
  6. 基于javaweb的留学生信息交流论坛
  7. 这几天折腾spark的kafka的低阶API createDirectStream的一些总结。
  8. 23种设计模式之几种常用模式
  9. python scipy.stats.norm.cdf_python的scipy.stats模块中正态分布常用函数总结
  10. :runtime error: member access within null pointer of type ‘struct ListNode‘报错