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

news/2024/9/27 13:01:06

创建窗口内容及验证码更换
代码示例:
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() {@Overridepublic 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~9int 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();
}

}
运行结果展示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/65373.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【VMware ESXi】使用 esxtop 杀死 ESXi 主机中卡死和不响应的虚拟机。

最近在家里的 Homelab 主机上进行 VMware Cloud Foundation 相关测试,由于 CPU 超负荷使用,某个别虚拟机时不时的会出现卡死和不响应等现象,进而导致了测试的失败并影响了相关实验的进度。比如,下图所示的嵌套 ESXi 虚拟机,本来运行好好的,由于资源不足,该虚拟机便出现了…

「TAOI-2」Ciallo~(∠・ω )⌒★ 题解

手玩了一个小时终于做出来了,这不得写一篇题解记录一下?? 下面设 \(s\) 的长度为 \(n\),\(t\) 的长度为 \(m\)。 考虑分类讨论: 如果 \(s\) 中有一个子串 \(s\) 与 \(t\) 完全相同(可以用哈希进行比较),设 \(s\) 是 \(s\) 的第 \(l\) 到第 \(r\) 个字符组成的字符串,则…

伯俊开发回忆录---VIP充值退款增加短信验证逻辑

一、前提总部财务需要增加对VIP卡充值退款的管控,防止资金被异常盗用, 1、针对VIP充值退款获取验证码,表单增加验证码字段 2、系统随机生成6位数验证码并生成提醒信息通过公司发送平台进行发送 三、校验规则未输入验证码不允许提交 验证码校验不通过提示重新输入

我的博客生涯开始了

我的博客生涯开始了

渗透测试入门

什么是渗透测试? 定义: 渗透测试完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节,以期发现和挖掘系统中存在的漏洞,然后输出渗透测试报告,并提交给网络所有者。网络所有者根据渗透人员提供的渗透测试报告,可以清晰知…

常间的css样式问题处理

flex导致文字省略失效 单独使用文字省略,按预期工作: 给元素加上flex,文字省略失效: 解决方案:flex和文字省略不要放到一个元素上。 flex布局中,文字溢出省略不生效的问题 问题展示.container {display: flex;width: 400px;border: 1px solid #000; }.content {flex: 1; …

Spring上传文件乱码问题(问号版)

Spring上传文件乱码问题(问号版) 目录Spring上传文件乱码问题(问号版)一、问题描述:二、原因分析三、解决办法 一、问题描述: spring项目上传文件,后端接收文件并获取文件名称,名称中文变成 “?”,例如:??abc()??.xml,其中问号为中文字符 // 前端传递参数 Mult…

伯俊开发回忆录---云POS待办事项增加稽核通知功能

一、事件前景总部财务稽核通知下发流程: 1.整理EXECL通知督导, 2.督导通知对应的门店, 3.收集完反馈意见汇报给分区财务审核 4.分区财务审核之后再通知总部财务审核, 这样整个稽核流程以及周期将大大影响稽核效率,因此希望在云POS门店端直接增加待办事项减少中间沟通环节。…