lsp66

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

public class CaptchaGenerator extends JFrame {
private JTextField captchaField;
private JTextField userInputField;
private JButton generateButton;
private JButton verifyButton;
private JLabel messageLabel;
private String generatedCaptcha;

public CaptchaGenerator() {
    // 设置窗口属性
    setTitle("验证码生成器");
    setSize(300, 200);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new FlowLayout());

    // 创建组件
    captchaField = new JTextField(10);
    captchaField.setEditable(false);
    userInputField = new JTextField(10);
    generateButton = new JButton("生成验证码");
    verifyButton = new JButton("验证输入");
    messageLabel = new JLabel("");

    // 添加生成验证码的事件监听
    generateButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            generatedCaptcha = generateCode(4);
            captchaField.setText(generatedCaptcha);
            messageLabel.setText(""); // 清除上一条信息
            userInputField.setText(""); // 清空用户输入
        }
    });

    // 添加验证输入的事件监听
    verifyButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String userInput = userInputField.getText();
            if (userInput.equals(generatedCaptcha)) {
                messageLabel.setText("验证码正确");
            } else {
                messageLabel.setText("验证码错误");
            }
            userInputField.setText(""); // 清空用户输入
        }
    });

    // 将组件添加到窗口
    add(new JLabel("验证码:"));
    add(captchaField);
    add(new JLabel("请输入验证码:"));
    add(userInputField);
    add(generateButton);
    add(verifyButton);
    add(messageLabel);
}

// 生成指定长度的验证码
public String generateCode(int length) {
    String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    Random random = new Random();
    StringBuilder code = new StringBuilder(length);

    for (int i = 0; i < length; i++) {
        int index = random.nextInt(characters.length());
        code.append(characters.charAt(index));
    }

    return code.toString();
}

public static void main(String[] args) {
    // 在事件调度线程上创建并显示GUI
    SwingUtilities.invokeLater(() -> {
        CaptchaGenerator generator = new CaptchaGenerator();
        generator.setVisible(true);
    });
}

}
代码可运行,但是由于我的编译环境导致文字是繁体,暂时不会更改

posted on 2024-09-27 22:14  李世鹏66  阅读(14)  评论(0)    收藏  举报