利用Java图形化界面组件Swing写一个简易的登录界面

简介: 利用Java图形化界面组件Swing写一个简易的登录界面

实际效果

介绍

使用的类

GridBagConstraints类

创建对象后可以通过调用访问成员属性来修改数值

再作为参数传入方法来指定类型的属性(宽高)

密码框JPasswordField

输入的内容是默认是隐藏的

重写actionPerformed方法

actionPerformed 方法是为了实现自定义的身份验证逻辑。通过重写这个方法,我们可以在用户点击登录按钮时执行我们自己的验证逻辑,而不仅仅是使用默认的行为。

在实际开发中,重写方法可以让我们根据具体需求来定制代码逻辑,使得程序更加灵活和符合特定的业务需求。这样做可以提高代码的可维护性和可扩展性,同时也有助于避免代码重复。

这边也提高了程序的可拓展性 我们可以接入双列集合中的用户名和密码

代码

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class LoginSystem extends JFrame implements ActionListener {
    private JTextField usernameField;
    private JPasswordField passwordField;
 
    public LoginSystem() {
 
        //初始化界面
        setTitle("登录系统");
        setSize(300, 150);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        //创建面板对象
        JPanel panel = new JPanel(new GridBagLayout());
        //GridBagConstraints是在图形化界面中控制组件大小和位置的
        GridBagConstraints c = new GridBagConstraints();
        //可以自定义组件的位置
        c.insets = new Insets(5, 5, 5, 5);
 
        //创建无图像且标题为空字符串JLabel
        JLabel userLabel = new JLabel("用户名:");
        c.gridx = 0;
        c.gridy = 0;
        panel.add(userLabel, c);
 
        //创建文本框JTextField
        usernameField = new JTextField(15);
        c.gridx = 1;
        c.gridy = 0;
        panel.add(usernameField, c);
 
        //创建无图像且标题为空字符串JLabel
        JLabel passLabel = new JLabel("密码:");
        c.gridx = 0;
        c.gridy = 1;
        panel.add(passLabel, c);
 
        //创建密码框JPasswordField
        passwordField = new JPasswordField(15);
        c.gridx = 1;
        c.gridy = 1;
        panel.add(passwordField, c);
 
        //创建按钮的对象
        JButton loginButton = new JButton("登录");
        loginButton.addActionListener(this);
        c.gridx = 0;
        c.gridy = 2;
        c.gridwidth = 2;
        c.anchor = GridBagConstraints.CENTER;
        panel.add(loginButton, c);
 
        //最后把面板添加进去
        add(panel);
 
        //可以将窗口设置到屏幕中央
        setLocationRelativeTo(null);
 
        //设置窗口可显示
        setVisible(true);
    }
 
    @Override
    public void actionPerformed(ActionEvent e) {
        String username = usernameField.getText();
        String password = new String(passwordField.getPassword());
        // 在这里可以添加验证逻辑,比如检查用户名和密码是否匹配
        if (username.equals("Dduo") && password.equals("123")) {
            JOptionPane.showMessageDialog(this, "登录成功");
        } else {
            JOptionPane.showMessageDialog(this, "登录失败,请重试");
        }
    }
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new LoginSystem());
    }
}
目录
相关文章
|
7天前
|
存储 安全 Java
Java集合框架核心组件理解这些基础类型能优化代码效率。
【6月更文挑战第21天】Java集合框架核心组件:ArrayList快速随机访问,适合大量查找;LinkedList擅于插入删除,不适于随机访问;HashMap是键值对存储,O(1)查找删除。选择取决于应用场景:频繁访问选ArrayList,频繁增删选LinkedList,键值查找选HashMap。理解这些基础类型能优化代码效率。
12 1
|
13天前
|
Java Windows
基于java Swing编写扫雷游戏设计实现(已调试)
基于java Swing编写扫雷游戏设计实现(已调试)
23 1
|
20天前
|
Java
JAVA Swing自定义JScorllPanel
JAVA Swing自定义JScorllPanel
13 1
|
7天前
|
安全 前端开发 Java
Java Web项目登录报Session Error
Java Web项目登录报Session Error
13 0
|
13天前
|
存储 设计模式 前端开发
[笔记] 疯狂JAVA讲义(第3版)第12章 Swing编程
[笔记] 疯狂JAVA讲义(第3版)第12章 Swing编程
|
20天前
|
小程序 前端开发 Java
(JAVA)支付宝小程序登录相关(authToken获取用户唯一userId、encryptedData解密手机号)
(JAVA)支付宝小程序登录相关(authToken获取用户唯一userId、encryptedData解密手机号)
|
2天前
|
Java 机器人 程序员
Java中的线程通信:wait、notify与Condition详解
Java中的线程通信:wait、notify与Condition详解
|
2天前
|
存储 安全 Java
Java中的线程安全与同步技术
Java中的线程安全与同步技术
|
1天前
|
存储 设计模式 并行计算
CopyOnWriteArrayList:深入理解Java中的线程安全List原理和应用
CopyOnWriteArrayList:深入理解Java中的线程安全List原理和应用
7 0
|
1天前
|
Java 测试技术 开发者
Java并发编程:深入理解线程池
本文将带领读者深入了解Java中的线程池,探索其内部机制、使用场景以及如何有效地利用线程池来提高程序的性能和可维护性。我们将通过实例演示如何创建和配置线程池,并讨论常见的并发模式和最佳实践。文章旨在为开发者提供实用的线程池应用知识,帮助他们在面对多线程编程挑战时,能够设计出更加高效和稳定的系统。