登陆界面功能的实现

功能目录

  • 数据库连接
  • 通过Swing类创建窗口
  • 对窗口中按钮进行监听
  • 事件处理
  • 完整代码(可直接用)


前言

此次仅是实现模拟QQ的登录功能,注册用户和登录之后的部分暂未上传

一、数据库连接

1.先通过Navicat for MySQL创建一个用户表,储存用户个人信息。

随便录入几个用户信息

2.数据库连接代码(JDBC技术)

代码如下(示例):

 Connection connection;
        Statement statement;
        ResultSet rs;
        String Url = "jdbc:mysql://localhost:3306/user?useSSl=true&useUnicode=true&characterEncoding=UTF-8";
        String User = "root";
        String Pass = "admin";
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException f) {
            System.out.println("SQLException:" + f.getLocalizedMessage());
        }

二、通过Swing类创建窗口

private final JFrame app;
private final JPanel JPanel1, JPanel2, JPanel3;
private final JButton JButton_Enter, JButton_Cancel;
private final JLabel JLabel_UserName, JLabel_UserPassword;
private final JTextField jTextField;
private final JPasswordField jPasswordField;

public LoginUI() {
        app = new JFrame("登陆界面实现");
        //将图标换成指定图片
        app.setIconImage(new ImageIcon("src/image1.jpeg").getImage());
        //设置窗体所在位置及大小
        app.setLocation(648, 312);
        app.setSize(300, 300);
        app.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //设置布局
        Container c = app.getContentPane();
        c.setLayout(new GridLayout(4, 1));
        JPanel1 = new JPanel();
        JPanel2 = new JPanel();
        JPanel3 = new JPanel();
        //添加组件以及事件监听
        JLabel_UserName = new JLabel("用户名:");
        JPanel1.add(JLabel_UserName);
        jTextField = new JTextField(10);
        JPanel1.add(jTextField);
        JLabel_UserPassword = new JLabel("   密码:");
        JPanel2.add(JLabel_UserPassword);
        jPasswordField = new JPasswordField(10);
        JPanel2.add(jPasswordField);
        JButton_Enter = new JButton("登录");
        JPanel3.add(JButton_Enter);
        JButton_Enter.addActionListener(this);
        JButton_Cancel = new JButton("取消");
        JPanel3.add(JButton_Cancel);
        JButton_Cancel.addActionListener(this);
        c.add(JPanel1);
        c.add(JPanel2);
        c.add(JPanel3);
        app.setResizable(false);
        app.setVisible(true);
    }

窗口界面如下:

  

三、对登录和取消这两个按钮进行监听

JButton_Enter.addActionListener(this);
JButton_Cancel.addActionListener(this);

四、进行事件处理

@Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == JButton_Enter) {
            Connection connection;
            Statement statement;
            ResultSet rs;
            String Url = "jdbc:mysql://localhost:3306/user?useSSl=true&useUnicode=true&characterEncoding=UTF-8";
            String User = "root";
            String Pass = "admin";
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
            } catch (ClassNotFoundException f) {
                System.out.println("SQLException:" + f.getLocalizedMessage());
            }
            try {
                connection = DriverManager.getConnection(Url, User, Pass);
                statement = connection.createStatement();
                rs = statement.executeQuery("select * from user");
                while (rs.next()) {
                    String st1 = rs.getString("id");
                    String st2 = rs.getString("password");
                    char[] ps = jPasswordField.getPassword();
                    StringBuilder st3 = new StringBuilder();
                    for (char p : ps) {
                        st3.append(p);
                    }
                    if (jTextField.getText().equals(st1) && ((st3.toString()).equals(st2))) {
                        message = 1;
                        JOptionPane.showMessageDialog(app,"登陆成功","系统提示",JOptionPane.INFORMATION_MESSAGE);
                        rs.close();
                        statement.close();
                        connection.close();
                     
                    }
                }
                if (message == 0) {
                    JOptionPane.showMessageDialog(app, "您输入的账号或密码有误,请重新输入", "系统提示", JOptionPane.ERROR_MESSAGE);
                }
                connection.close();
            } catch (SQLException f) {
                System.out.println("SQLException" + f.getMessage());
            }
        }
        if (e.getSource() == JButton_Cancel) {
            jTextField.setText("");
            jPasswordField.setText("");
        }
    }
}

、完整代码

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;

public class LoginUI implements ActionListener {
    private final JFrame app;
    private final JPanel JPanel1, JPanel2, JPanel3;
    private final JButton JButton_Enter, JButton_Cancel;
    private final JLabel JLabel_UserName, JLabel_UserPassword;
    private final JTextField jTextField;
    private final JPasswordField jPasswordField;
    private int message = 0;
    public LoginUI() {
        app = new JFrame("登陆界面实现");
        //将图标换成指定图片
        app.setIconImage(new ImageIcon("src/image1.jpeg").getImage());
        //设置窗体所在位置及大小
        app.setLocation(648, 312);
        app.setSize(300, 300);
        app.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //设置布局
        Container c = app.getContentPane();
        c.setLayout(new GridLayout(4, 1));
        JPanel1 = new JPanel();
        JPanel2 = new JPanel();
        JPanel3 = new JPanel();
        //添加组件以及事件监听
        JLabel_UserName = new JLabel("用户名:");
        JPanel1.add(JLabel_UserName);
        jTextField = new JTextField(10);
        JPanel1.add(jTextField);
        JLabel_UserPassword = new JLabel("   密码:");
        JPanel2.add(JLabel_UserPassword);
        jPasswordField = new JPasswordField(10);
        JPanel2.add(jPasswordField);
        JButton_Enter = new JButton("登录");
        JPanel3.add(JButton_Enter);
        JButton_Enter.addActionListener(this);
        JButton_Cancel = new JButton("取消");
        JPanel3.add(JButton_Cancel);
        JButton_Cancel.addActionListener(this);
        c.add(JPanel1);
        c.add(JPanel2);
        c.add(JPanel3);
        app.setResizable(false);
        app.setVisible(true);
    }
    public static void main(String[] args) {

        new LoginUI();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == JButton_Enter) {
            Connection connection;
            Statement statement;
            ResultSet rs;
            String Url = "jdbc:mysql://localhost:3306/user?useSSl=true&useUnicode=true&characterEncoding=UTF-8";
            String User = "root";
            String Pass = "admin";
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
            } catch (ClassNotFoundException f) {
                System.out.println("SQLException:" + f.getLocalizedMessage());
            }
            try {
                connection = DriverManager.getConnection(Url, User, Pass);
                statement = connection.createStatement();
                rs = statement.executeQuery("select * from user");
                while (rs.next()) {
                    String st1 = rs.getString("id");
                    String st2 = rs.getString("password");
                    char[] ps = jPasswordField.getPassword();
                    StringBuilder st3 = new StringBuilder();
                    for (char p : ps) {
                        st3.append(p);
                    }
                    if (jTextField.getText().equals(st1) && ((st3.toString()).equals(st2))) {
                        message = 1;
                        JOptionPane.showMessageDialog(app,"登陆成功","系统提示",JOptionPane.INFORMATION_MESSAGE);
                        rs.close();
                        statement.close();
                        connection.close();
                    }
                }
                if (message == 0) {
                    JOptionPane.showMessageDialog(app, "您输入的账号或密码有误,请重新输入", "系统提示", JOptionPane.ERROR_MESSAGE);
                }
                connection.close();
            } catch (SQLException f) {
                System.out.println("SQLException" + f.getMessage());
            }
        }
        if (e.getSource() == JButton_Cancel) {
            jTextField.setText("");
            jPasswordField.setText("");
        }
    }
}

总结

仅仅是简单的实现了一下这个界面,而且只有数据库中有这个用户名时才能进行判断是否能登录,实现注册功能暂未上传。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

And涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值