1.使用到了一个数组来存放26个大小写字母和0-9的数字
2.使用了随机产生数字的代码将数组里的密码随机抽取5位组成验证码,使用一个字符串变量保存
3.使用了窗口进行可视化界面的输出
4.通过判断验证码的正确与否实现跳转登录成功后的界面,和登录失败后的界面
5.通过点击重置按钮,可以实现验证码刷新功能
6.验证码输入错误之后,验证码会重新刷新
7.这次的难点在于怎么将26个大小写字母和数字存进数组里
8.在验证码那里,应该加上一个点击验证码可以刷新。还有判断验证码是否正确应该需要不区分大小写。验证码应该使用图片来进行展示。日后学习到了怎么才能实现这几个缺点,一定要记得来完善代码!!
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
public class test6 extends JFrame implements ActionListener {
JPanel jp1=new JPanel();
JLabel jl1=new JLabel("系统登录");
JPanel jp2=new JPanel();
JTextField jt1=new JTextField(25);
JPanel jp3=new JPanel();
JTextField jt2=new JTextField(25);
JPanel jp4=new JPanel();
JTextField jt3=new JTextField(10);
JLabel jl2=new JLabel();
JPanel jp5=new JPanel();
JButton jb1=new JButton("重置");
JButton jb2=new JButton("登录");
public test6(){
setSize(500,400);
setVisible(true);
setTitle("系统登录");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocation(700,400);
setLayout(new GridLayout(5,1));
add(jp1);
add(jp2);
add(jp3);
add(jp4);
add(jp5);
jp1.add(jl1);
jp2.add(jt1);
jp3.add(jt2);
jp4.add(jt3);
jp4.add(jl2);
jp5.add(jb1);
jp5.add(jb2);
jl2.setText(cipher());
jb1.addActionListener(this);
jb2.addActionListener(this);
}
public static void main(String[] args) {
new test6();
}
public static String cipher(){
String psw="";
int x=0;
char[]arry=new char[67];
Random r=new Random();
for (int i=0;i<26;i++){
arry[i]=(char) ('A'+i);
arry[i+26]=(char)('a'+i);
}
for (int i=52;i<62;i++){
arry[i]=(char)('0'+x++);
}
for (int i=0;i<5;i++){
int number=r.nextInt(62);
char paswd= arry[number];
psw=psw+paswd;
}
return psw;
}
public void actionPerformed(ActionEvent e) {
if (jl2==e.getSource()){
jl2.setText(cipher());
}
if (e.getSource()==jb1){
jl2.setText(cipher());
jt3.setText(" ");
}
if (e.getSource()==jb2){
if (jt3.getText().equals(jl2.getText())){
JOptionPane.showMessageDialog(null,"验证码正确,即将跳转");
}
else
{
JOptionPane.showMessageDialog(null,"验证码错误!请重新输入");
jl2.setText(cipher());
}
}
}
}