糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > Java简单的用户登录界面+MySQL

Java简单的用户登录界面+MySQL

时间:2024-01-11 00:02:21

相关推荐

Java简单的用户登录界面+MySQL

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》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。