栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java简单的用户登录界面+mysql

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java简单的用户登录界面+mysql

1.概述

一个简单的swing登录界面,使用了简单的JDBC.
如图:

2.UI (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 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()));
  else
      JOptionPane.show/confirm/iDialog(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 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.show/confirm/iDialog(null,"添加"+(DBUtils.add(user) ? "成功" : "失败"), "",JOptionPane.CLOSED_OPTION);

提示信息框.

(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 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.show/confirm/iDialog(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

码云

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号