首页 > 编程语言 >java窗口登录界面实现随机验证码

java窗口登录界面实现随机验证码

时间:2024-09-27 13:01:16浏览次数:7  
标签:setBounds 界面 import getContentPane 验证码 add new java JLabel

创建窗口内容及验证码更换
代码示例:
package frame;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Jframe extends JFrame{
public Jframe(){
initJframe();
initView();
this.setVisible(true);
}
public void initJframe(){
this.setSize(488, 430);
this.setTitle("登录");
this.setAlwaysOnTop(true);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(3);
this.setLayout(null);
}
public void initView() {
JLabel usenameText=new JLabel("登录名");
usenameText.setBounds(116,135,47,17);
this.getContentPane().add(usenameText);

	JTextField username=new JTextField();
	username.setBounds(195,134,200,30);
	this.getContentPane().add(username);
	
	JLabel passwordText=new JLabel("密码");
	passwordText.setBounds(130, 195, 32, 16);
	this.getContentPane().add(passwordText);
	
	JTextField password=new JTextField();
	password.setBounds(195, 195, 200, 30);
	this.getContentPane().add(password);
	
	JLabel codeText=new JLabel("验证码");
	codeText.setBounds(133, 256, 50, 30);
	this.getContentPane().add(codeText);
	
	JTextField code=new JTextField();
	code.setBounds(195, 256, 100, 30);
	this.getContentPane().add(code);
	
	String codeStr=CodeUtil.getCode();
	JLabel rightCode=new JLabel();
	rightCode.setText(codeStr);
	rightCode.setBounds(300, 256, 50, 30);
	this.getContentPane().add(rightCode);
	
	JButton login=new JButton("登录");
	login.setBounds(123, 310, 100, 47);
	this.getContentPane().add(login);
	
	JButton register=new JButton("快速注册");
	register.setBounds(256, 310, 100, 47);
	this.getContentPane().add(register);
	
	JButton change=new JButton("更换");
	change.setBounds(350, 256, 60, 30);
	this.getContentPane().add(change);
	change.addActionListener(new ActionListener() {
		
		@Override
		public void actionPerformed(ActionEvent e) {
			String codeStr1=CodeUtil.getCode();
			rightCode.setText(codeStr1);
		}
	});
		
}

}
生成验证码
代码示例:
package frame;
import java.util.ArrayList;
import java.util.Random;

public class CodeUtil {
public static String getCode(){
//1.创建一个集合
ArrayList list = new ArrayList<>();//52 索引的范围:0 ~ 51
//2.添加字母 a - z A - Z
for (int i = 0; i < 26; i++) {
list.add((char)('a' + i));//a - z
list.add((char)('A' + i));//A - Z
}
//3.打印集合
//4.生成4个随机字母
String result = "";
Random r = new Random();
for (int i = 0; i < 4; i++) {
//获取随机索引
int randomIndex = r.nextInt(list.size());
char c = list.get(randomIndex);
result = result + c;
}

    //5.在后面拼接数字 0~9
    int number = r.nextInt(10);
    //6.把随机数字拼接到result的后面
    result = result + number;
    //7.把字符串变成字符数组
    char[] chars = result.toCharArray();//[A,B,C,D,5]
    //8.在字符数组中生成一个随机索引
    int index = r.nextInt(chars.length);
    //9.拿着4索引上的数字,跟随机索引上的数字进行交换
    char temp = chars[4];
    chars[4] = chars[index];
    chars[index] = temp;
    //10.把字符数组再变回字符串
    String code = new String(chars);
    return code;
}

}
主函数
代码示例:
package frame;
import frame.Jframe;
public class App {
public static void main(String[] args) {
new Jframe();
}

}
运行结果展示:

标签:setBounds,界面,import,getContentPane,验证码,add,new,java,JLabel
From: https://www.cnblogs.com/WMKQF/p/18435453

相关文章

  • 如何在Java中优雅地处理异常
    在软件开发过程中,异常处理是一个至关重要的环节。良好的异常处理机制不仅能提升程序的健壮性,还能极大地改善用户体验。对于Java开发者来说,掌握如何有效地处理异常是非常必要的。本文将探讨几种在Java中优雅地处理异常的方法。使用try-with-resources语句从Java7开始,引入了try-wit......
  • Java11 新特性
    直接运行在以前的版本中,在命令提示下,需要先编译,生成class文件之后再运行,例如:javacHelloWorld.JavajavaHelloWorld在Java11中,可以这样直接运行,当然这样直接运行是不产生字节码文件的javaHelloWorld.JavaString新增方法1.strip方法:可以去除首尾空格,与之前的trim的区别......
  • Java12 新特性
    升级的switch语句在jdk12之前的switch语句中,如果没有写break,则会出现case穿透现象intmonth=3;switch(month){case3:case4:case5:System.out.println("spring");break;case6:case7:case8:System.out.print......
  • java 学习- spring 全家桶学习与使用教程
    文章目录前言一、Spring全家桶概述二、SpringFramework基础1.核心特性2.Bean管理3.SpringMVC三、SpringBoot快速开发1.简介2.创建项目3.编写应用4.运行与测试四、SpringCloud微服务架构1.简介2.核心组件3.构建微服务五、高级......
  • 学习011-03-03 Relationships Between Persistent Objects in Code and UI(代码和用户
    RelationshipsBetweenPersistentObjectsinCodeandUI(代码和用户界面中持久对象之间的关系)Whendesigningabusinessmodel,itcanbenecessarytosetspecificrelationshipsbetweenbusinessobjects.Thistopicdescribeshowtosettheserelationshipsbe......
  • js监听界面实现滑块自动验证
    functionsimulateMouseDown(target,options){varevent=newMouseEvent('mousedown',options);target.dispatchEvent(event);}functionsimulateMouseMove(target,options){varevent=newMouseEvent('mousemove',options);t......
  • Java9 新特性
    接口私有方法publicinterfaceMyInterface{//定义私有方法privatevoidm1(){System.out.println("123");}//default中调用defaultvoidm2(){m1();}}可以在接口中声明private修饰的方法了,其实就是为了让default方法......
  • Java如何解决同时出库入库订单号自动获取问题
    在Java中处理同时出库和入库的订单号自动获取问题,通常涉及到多线程环境下的并发控制。为了确保订单号的唯一性和连续性,我们可以使用多种策略,如数据库的自增ID、分布式锁、或者利用Java的并发工具类如AtomicLong等。这里,我将提供一个基于AtomicLong的简单示例,适用于单机环境。1.场......
  • Java如何解决同时出库入库订单号自动获取问题
    在Java中处理同时出库和入库的订单号自动获取问题,通常涉及到多线程环境下的并发控制。为了确保订单号的唯一性和连续性,我们可以使用多种策略,如数据库的自增ID、分布式锁、或者利用Java的并发工具类如AtomicLong等。这里,我将提供一个基于AtomicLong的简单示例,适用于单机环境。1.场......
  • JavaScript 变量的作用域链
    作用域链本质上就是使用的是哪个变量,全局变量,局部变量,自身的变量。这个在看别人代码的逻辑的时候非常有用,底层是变量的查找机制。嵌套关系的作用域窜连起来形成了作用域链在函数被执行,会优先查找当前函数作用域中的变量。如果当前函数作用域找不到,则会逐级查找父级作用域,知道......