JFrame 做一个简易的验证码

验证码生成器
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ValidationCode extends JFrame implements ActionListener{
    
private JButton productBtn;
    
private JPanel downPanel;    
    
public ValidationCode(){
        productBtn
=new JButton("New Code");
        productBtn.addActionListener(
this);
        productBtn.setSize(
50,50);        
        downPanel
=new JPanel();            
        downPanel.add(productBtn);        
        
this.setTitle("Validation Code");        
        
this.add(downPanel);    
    }
    
public void actionPerformed(ActionEvent e){        
        
this.repaint();
    }
    
public void paint(Graphics g){        
        
super.paint(g);
        String code
="";
        
char[] characters={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9','0'};
        
char[] fourResult=new char[4];
        
int index;
        
for (int k=0;k<4;k++ ){
             index
=(int)(Math.random()*62);
            fourResult[k]
=characters[index];
        }
        
for(int i=0;i<4;i++)
            code
+=fourResult[i];           
        g.setColor(Color.RED);        
        g.drawString(code,
100,100);
    }
    
public static void main(String[] args){
        ValidationCode vc
=new ValidationCode();
        vc.setBounds(
300,300,200,200);
        vc.setVisible(
true);
        vc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

运行结果:


以下是一个简单的Java登录页面代码,包括验证码的生成和验证: ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; public class LoginFrame extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private JLabel userLabel, passwordLabel, captchaLabel; private JTextField userTextField; private JPasswordField passwordField; private JTextField captchaTextField; private JButton loginButton, refreshButton; private String captchaCode; public LoginFrame() { initUI(); initCaptcha(); } private void initUI() { setTitle("Login"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300, 200); setLocationRelativeTo(null); setResizable(false); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(4, 2)); userLabel = new JLabel("Username:"); panel.add(userLabel); userTextField = new JTextField(); panel.add(userTextField); passwordLabel = new JLabel("Password:"); panel.add(passwordLabel); passwordField = new JPasswordField(); panel.add(passwordField); captchaLabel = new JLabel("Captcha:"); panel.add(captchaLabel); captchaTextField = new JTextField(); panel.add(captchaTextField); loginButton = new JButton("Login"); loginButton.addActionListener(this); panel.add(loginButton); refreshButton = new JButton("Refresh"); refreshButton.addActionListener(this); panel.add(refreshButton); add(panel); } private void initCaptcha() { captchaCode = generateCaptcha(); } private String generateCaptcha() { String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; StringBuilder sb = new StringBuilder(); Random rnd = new Random(); while (sb.length() < 6) { int index = (int) (rnd.nextFloat() * chars.length()); sb.append(chars.charAt(index)); } return sb.toString(); } private boolean validateCaptcha() { return captchaTextField.getText().equalsIgnoreCase(captchaCode); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == loginButton) { String username = userTextField.getText(); String password = new String(passwordField.getPassword()); if (username.equals("admin") && password.equals("admin") && validateCaptcha()) { JOptionPane.showMessageDialog(this, "Login successful!"); dispose(); } else { JOptionPane.showMessageDialog(this, "Invalid username, password or captcha."); initCaptcha(); captchaTextField.setText(""); } } else if (e.getSource() == refreshButton) { initCaptcha(); captchaTextField.setText(""); } } public static void main(String[] args) { LoginFrame loginFrame = new LoginFrame(); loginFrame.setVisible(true); } } ``` 在此代码中,我们使用了Java Swing库来创建GUI界面。在initUI()方法中,我们创建了一个包含用户名、密码和验证码的登录面板,并添加了“登录”和“刷新”按钮。在initCaptcha()方法中,我们使用generateCaptcha()方法生成一个6位随机字符串作为验证码,并在窗口加载时设置captchaCode变量。在validateCaptcha()方法中,我们将用户输入的验证码与captchaCode变量比较,如果相同则返回true,否则返回false。在actionPerformed()方法中,我们检查用户输入的用户名、密码和验证码是否正确,如果正确则显示“登录成功”的消息,否则显示“无效的用户名、密码或验证码”的消息,并生成一个新的验证码。最后,在main()方法中,我们创建一个LoginFrame对象并使其可见。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值