intb=random.nextBoolean()?
1:
-1;
g2d.rotate(random.nextInt(10)*0.01*b);
g2d.setColor(getRandColor(20,130));
g2d.drawString(code.charAt(i)+"",16*i+10,base);
}
}
//下一个验证码
publicvoidnextCode(){
generateCode();
repaint();
}
@Override
publicvoidmouseClicked(MouseEvente){
nextCode();
}
@Override
publicvoidmousePressed(MouseEvente){
}
@Override
publicvoidmouseReleased(MouseEvente){
}
@Override
publicvoidmouseEntered(MouseEvente){
}
@Override
publicvoidmouseExited(MouseEvente){
}
}
程序的截图
/*
*java图形界面
*/
importjava.awt.Color;
importjava.awt.FlowLayout;
importjava.awt.Font;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowStateListener;
importjavax.swing.Action;
importjavax.swing.JApplet;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JPasswordField;
importjavax.swing.JTextField;
importjavax.swing.event.DocumentEvent;
importjavax.swing.event.DocumentListener;
importjavax.swing.text.Document;
publicclassWindowLoginextendsJFrameimplementsActionListener,DocumentListener{
JTextFieldtext_userName,
text_code;
JPasswordFieldtext_userPass;
JLabellabel_prompt,
label_title,
label_userName,
label_userPass,
label_code;
JPanelpanel_firt;
JButtonbtn_land;
//btn_register;
ValidCodevcode;
publicWindowLogin(){
}
publicWindowLogin(Stringtitle,intx,inty,intwidth,intheigth){
init();
this.setLayout(null);
this.setBounds(x,y,width,heigth);
this.setTitle(title);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.getContentPane().setBackground(newColor(190,250,249));
}
voidinit(){
this.setLocationRelativeTo(null);
label_title=newJLabel("教务管理系统登录");
label_title.setFont(newFont("宋体",0,30));
panel_firt=newJPanel();
panel_firt.add(label_title);
panel_firt.setBounds(100,30,250,45);
panel_firt.setOpaque(false);
this.add(panel_firt);
label_userName=newJLabel("用户名:
");
label_userName.setBounds(80,90,60,35);
label_userPass=newJLabel("密码:
");
label_userPass.setBounds(80,140,60,35);
label_code=newJLabel("验证码:
");
label_code.setBounds(80,190,60,35);
label_prompt=newJLabel("请输入验证码,再登录");
label_prompt.setBounds(270,230,120,35);
label_prompt.setForeground(Color.red);
text_userName=newJTextField();
text_userName.setBounds(140,90,135,35);
text_userName.setFont(newFont("宋体",Font.BOLD,20));
text_userPass=newJPasswordField();
text_userPass.setBounds(140,140,135,35);
text_code=newJTextField();
text_code.setBounds(140,190,75,35);
text_code.getDocument().addDocumentListener(this);
text_code.setFont(newFont("宋体",Font.BOLD,20));
btn_land=newJButton("登录");
btn_land.setBounds(165,230,100,35);
btn_land.setBackground(newColor(224,255,255));
btn_land.setForeground(Color.blue);
btn_land.setFont(newFont("Dialog",Font.BOLD,24));
btn_land.addActionListener(this);
btn_land.setEnabled(false);
vcode=newValidCode();
vcode.setBounds(220,185,80,35);
add(label_userName);
add(text_userName);
add(label_userPass);
add(text_userPass);
add(label_code);
add(text_code);
add(label_prompt);
add(vcode);
add(btn_land);
}
@Override
publicvoidactionPerformed(ActionEventarg0){
if(arg0.getSource()==btn_land){
Stringcode=text_code.getText();
code.trim();
if(code.toLowerCase().equals(vcode.getCode().toLowerCase())){
if(text_userName.getText().equals("admin")){
if(String.valueOf(text_userPass.getPassword()).equals("123456")){
code="登录成功";
}else{
code="密码错误";
}
}else{
code="用户名错误";
}
}else{
code="验证码错误";
}
vcode.nextCode();
JOptionPane.showMessageDialog(this,code,"提示",JOptionPane.WARNING_MESSAGE);
}
}
@Override
publicvoidinsertUpdate(DocumentEvente){
Stringcode=text_code.getText();
code.trim();
if(code.length()==4){
btn_land.setEnabled(true);
label_prompt.setVisible(false);
}
else{
btn_land.setEnabled(false);
label_prompt.setVisible(true);
}
//vcode.getCode();
}
@Override
publicvoidremoveUpdate(DocumentEvente){
insertUpdate(e);
}
@Override
publicvoidchangedUpdate(DocumentEvente){
insertUpdate(e);
}
}
4.2实验结果
登录时,系统随机生成验证码,用户输入验证码后系统先判断验证码是否正确,则提示用户验证失败,并重新随机生成一个新的验证码,如果输入的验证码正确,则提示验证成功。
5、实验总结
通过本次实验了解到验证码的作用所在,也简单实现了,登录时系统随机生成验证码,并显示在图片中;用户输入验证码后系统先判断验证码是否正确,如果不正确,则提示用户验证失败,并重新随机生成一个新的验证码,等待用户再次输入;如果输入的验证码正确,则提示验证成功。