一、简介

基于上一篇基础,实现登录表单,包含输入框、密码框、登录 / 重置按钮、表单校验,模拟简单登录逻辑。

二、完整代码

java

运行

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

/**
 * Swing 登录界面实战
 */
public class SwingLoginDemo {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("用户登录");
            frame.setSize(350, 280);
            frame.setLocationRelativeTo(null);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            // 使用网格布局 3行2列
            frame.setLayout(new GridLayout(3, 2, 10, 15));
            frame.setResizable(false); // 禁止拉伸窗口

            // 1. 账号行
            JLabel userLabel = new JLabel("账号:");
            userLabel.setFont(new Font("微软雅黑", Font.PLAIN, 15));
            JTextField userText = new JTextField();
            userText.setFont(new Font("微软雅黑", Font.PLAIN, 15));

            // 2. 密码行
            JLabel pwdLabel = new JLabel("密码:");
            pwdLabel.setFont(new Font("微软雅黑", Font.PLAIN, 15));
            JPasswordField pwdText = new JPasswordField();
            pwdText.setFont(new Font("微软雅黑", Font.PLAIN, 15));

            // 3. 按钮行
            JButton loginBtn = new JButton("登录");
            JButton resetBtn = new JButton("重置");

            // 登录按钮事件
            loginBtn.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    // 获取输入内容
                    String username = userText.getText().trim();
                    String password = new String(pwdText.getPassword()).trim();

                    // 简单校验
                    if ("admin".equals(username) && "123456".equals(password)) {
                        JOptionPane.showMessageDialog(frame, "登录成功!");
                    } else if (username.isEmpty() || password.isEmpty()) {
                        JOptionPane.showMessageDialog(frame, "账号和密码不能为空!", "提示", JOptionPane.WARNING_MESSAGE);
                    } else {
                        JOptionPane.showMessageDialog(frame, "账号或密码错误!", "错误", JOptionPane.ERROR_MESSAGE);
                    }
                }
            });

            // 重置按钮事件
            resetBtn.addActionListener(e -> {
                userText.setText("");
                pwdText.setText("");
            });

            // 依次添加组件
            frame.add(userLabel);
            frame.add(userText);
            frame.add(pwdLabel);
            frame.add(pwdText);
            frame.add(loginBtn);
            frame.add(resetBtn);

            frame.setVisible(true);
        });
    }
}

三、代码说明

  1. GridLayout:网格布局,规整排列表单组件,适合登录、注册类界面。
  2. JTextField:普通文本输入框(账号)。
  3. JPasswordField:密码输入框,getPassword() 获取密码(返回字符数组)。
  4. 表单校验:判断输入是否为空、账号密码是否匹配。
  5. 重置按钮:清空两个输入框内容。

四、运行效果

弹出固定大小登录窗口,输入 admin / 123456 提示登录成功;输入为空或错误账号密码,对应弹窗提醒。

更多推荐