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);
});
}
}
代码可运行,但是由于我的编译环境导致文字是繁体,暂时不会更改
浙公网安备 33010602011771号