首页 > 编程语言 >用户注册与登录界面java源码(带验证码)

用户注册与登录界面java源码(带验证码)

时间:2023-09-20 22:44:08浏览次数:41  
标签:java String 用户注册 setText private add 源码 new JLabel

        import javax.swing.*;
        import java.awt.*;
        import java.util.Random;

      public class RegistrationSystem extends JFrame {
        private final JTextField usernameTextField;
        private final JPasswordField passwordField;
        private final JTextField captchaTextField;
        private final JLabel captchaLabel;
        private JLabel feedbackLabel;
        private String captcha;
        }

       public RegistrationSystem() {
        setTitle("Registration System");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 300);
        setLayout(new GridLayout(6, 2));
        }

    // 注册页面
    JLabel usernameLabel = new JLabel("Username:");
    usernameTextField = new JTextField();
    JLabel passwordLabel = new JLabel("Password:");
    passwordField = new JPasswordField();
    JLabel captchaInputLabel = new JLabel("Captcha:");
    captchaTextField = new JTextField();
    captchaLabel = new JLabel();
    JButton refreshCaptchaButton = new JButton("Refresh Captcha");
    JButton actionButton = new JButton("Register");

    // 验证码生成与刷新
    generateCaptcha();
    refreshCaptchaButton.addActionListener(e -> generateCaptcha());

    // 按钮点击事件
    actionButton.addActionListener(e -> {
        String username = usernameTextField.getText();
        String password = new String(passwordField.getPassword());
        String inputCaptcha = captchaTextField.getText();

        // 验证码验证
        if (!inputCaptcha.equals(captcha)) {
            feedbackLabel.setText("Invalid captcha. Please try again.");
            generateCaptcha();
            return;
        }

        // 用户名和密码验证
        if (!isValidUsername(username) || !isValidPassword(password)) {
            feedbackLabel.setText("Invalid username or password. Please try again.");
            generateCaptcha();
            return;
        }

        // 根据按钮的文本判断是注册还是登录操作
        if (actionButton.getText().equals("Register")) {
            // 模拟注册成功,跳转到登录界面
            JOptionPane.showMessageDialog(null, "Registration successful!");
            showLoginPage();
        } else if (actionButton.getText().equals("Login")) {
            // 模拟登录成功,显示欢迎界面
            JOptionPane.showMessageDialog(null, "Login successful!");
            showWelcomePage(username);
        }
    });

    // 添加组件到注册页面
    add(usernameLabel);
    add(usernameTextField);
    add(passwordLabel);
    add(passwordField);
    add(captchaInputLabel);
    add(captchaTextField);
    add(captchaLabel);
    add(refreshCaptchaButton);
    add(actionButton);

    // 反馈信息标签
    feedbackLabel = new JLabel();
    add(feedbackLabel);

    // 默认显示注册页面
    showRegisterPage();
}

// 显示注册页面
private void showRegisterPage() {
    setTitle("Registration Page");
    setVisible(true);
    feedbackLabel.setText("");
    usernameTextField.setText("");
    passwordField.setText("");
    captchaTextField.setText("");
    captchaLabel.setText("");
    JButton actionButton = (JButton) getContentPane().getComponent(8);
    actionButton.setText("Register");
}

// 显示登录页面
private void showLoginPage() {
    setTitle("Login Page");
    setVisible(true);
    feedbackLabel.setText("");
    usernameTextField.setText("");
    passwordField.setText("");
    captchaTextField.setText("");
    captchaLabel.setText("");
    JButton actionButton = (JButton) getContentPane().getComponent(8);
    actionButton.setText("Login");
}

// 显示欢迎界面
private void showWelcomePage(String username) {
    setTitle("Welcome");
    setSize(300, 200);
    getContentPane().removeAll();
    getContentPane().setLayout(new FlowLayout());
    JLabel welcomeLabel = new JLabel("Hello " + username + "! Current time is: " + getCurrentTime());
    getContentPane().add(welcomeLabel);
    revalidate();
    repaint();
}

// 生成验证码
private void generateCaptcha() {
    String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    StringBuilder sb = new StringBuilder();
    Random random = new Random();
    for (int i = 0; i < 8; i++) {
        int index = random.nextInt(characters.length());
        sb.append(characters.charAt(index));
    }
    captcha = sb.toString();
    captchaLabel.setText(captcha);
}

// 验证用户名格式是否有效
private boolean isValidUsername(String username) {
    return username.matches("[a-zA-Z0-9]{8,20}");
}

// 验证密码格式是否有效
private boolean isValidPassword(String password) {
    return password.matches("[a-zA-Z0-9]{8,16}");
}

// 获取当前时间
private String getCurrentTime() {
    return new java.util.Date().toString();
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(RegistrationSystem::new);
}

}

标签:java,String,用户注册,setText,private,add,源码,new,JLabel
From: https://www.cnblogs.com/newzeon/p/17718652.html

相关文章

  • 掌握Java运算符,让你的代码更高效
    Java是一种面向对象的编程语言,它支持多种运算符用于处理数据。在Java中,有多种类型的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符等。本文将详细介绍Java中的运算符。一、算术运算符加法运算符:+语法:result=a+b;示例:intresult=5+3;//result=8;减法运算符:-......
  • 【Java】个人项目互评——中小学数学卷子自动生成程序
     目录一、简介二、项目要求三、测试与分析1、功能测试2、代码分析四、项目总结1、代码优点2、代码缺点五、结语一、简介本博客用于分析和总结我的结对编程队友王晓婧的个人项目代码,代码使用语言为Java,与本......
  • 9.20java学习
    1packagestaticDemo1;23publicclassTest1{4publicstaticvoidmain(String[]args){5int[]arr1={1,2,3,4,5};6System.out.println(Arrunit.printArr(arr1));7double[]arr2={1.1,2.2,3.3,4.4};8System.out......
  • Python从入门到实战-Scrapy源码2-核心组件
    Scrapy核心组件本篇文章解决:Scrapy有哪些核心组件?以及它们主要负责了哪些工作?这些组件为了完成这些功能,内部又是如何实现的?爬虫类上次讲到Scrapy运行起来后,执行到最后到了Crawler的crawl方法,我们来看这个方法:@defer.inlineCallbacksdefcrawl(self,*args,**kwargs)......
  • 最新SSL证书申请源码,支持API接口,支付在线
    最新SSL证书申请源码,支持API接口,支付在线目前测试还不需要授权,以后更新版就不知道了SSL证书保证网络安全的基本保障。向您介绍我们的在线生成SSL证书系统支持在线生成SSL证书系统,用户登录可在线申请SSL,后台对接ssl证书api接口www.httple.net源码截图: ......
  • RocketMQ源码(六):RocketMQ消费者启动流程
    RocketMQ通过Consumer消费消息,可并发和顺序的处理消息,这里以并发消费普通消息为例,分析消息下佛诶的整体流程。Consumer的示例代码如下:1importcom.snails.rmq.common.RMQConstant;2importorg.apache.rocketmq.client.consumer.DefaultMQPushConsumer;3importorg.a......
  • 【HNU个人项目互评】 基于java生成中小学数学卷子自动生成程序代码分析
    【评价者】:金颖希【项目作者】:刘一凡【使用语言】:Java前言【项目简介】本项目为中小学数学卷子自动生成程序,采用java编程语言实现用户登录、用户类型判断、生成题目、题目查重、切换用户类型以及题目保存等简单功能。【评价标准】本文以代码分析为主,主要从代码的可读性、性能......
  • nacos1.4.X版本服务注册源码分析
     客户端:nacos1.4.1版本服务注册流程1:依赖spring-cloud-starter-alibaba-nacos-discovery2:resources/META-INF/spring.factories自动配置NacosServiceRegistryAutoConfiguration3:自动配置类NacosAutoServiceRegistration继承AbstractAutoServiceRegistration实现Appli......
  • [Java]POJO总结
    一、什么是POJO“PlainOldJavaObject”“简单java对象”,也有另外一种英文描述“PlainOrdinaryJavaObject”,都不影响。POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。通常POJO类的规范:所有属性应该是私有的所有属性都应......
  • 无涯教程-JavaScript - CHISQ.DIST.RT函数
    描述CHISQ.DIST.RT函数返回卡方分布的右尾概率。X2分布与X2测试相关。使用X2检验比较观察值和期望值。通过将观察到的输出与预期的输出进行比较,您可以决定原始假设是否有效。语法CHISQ.DIST.RT(x,deg_freedom)争论Argument描述Required/OptionalXThevalue......