package com.itheima.util;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.Random;
public class CodeUtil extends JFrame {
//统一接受容器
public Container container = null;
//增加标签
Label label = new Label("验证码");
public CodeUtil(){
initJFrame();
initView();
this.setVisible(true);
}
private void initView() {
String code = getCode();
label.setText(code);
label.setBounds(300, 256, 50, 30);;
this.getContentPane().add(label);
}
private void initJFrame() {
this.setTitle("验证码");//设置标题
this.setSize(633, 423);//设置宽高
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setLayout(null);//去除边框
this.setAlwaysOnTop(true);//顶置
this.setLocationRelativeTo(null);//居中
}
public static String getCode(){
//1.创建一个集合
ArrayList<Character> 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.打印集合
System.out.println(list);
//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;
}
//System.out.println(result);//长度为4的随机字符串
//5.在后面拼接数字 0~9
int number = r.nextInt(10);
//6.把随机数字拼接到result的后面
result = result + number;
//System.out.println(result);//ABCD5
//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);
//System.out.println(code);
return code;
}
}
验证码GUI界面(java jdk17)
最新推荐文章于 2024-07-27 13:31:57 发布