上述代码中生成验证码后要求用户重新输入一遍验证码
时间: 2024-09-30 10:13:35 浏览: 24
如果你想让用户在每次点击验证按钮后都重新生成新的验证码,你需要移除验证码生成的部分,并在按钮事件处理程序中添加一个新的生成验证码的步骤。这里是对上述代码的一个简单调整:
```java
import javax.swing.*;
import java.awt.*;
import java.util.Random;
public class CaptchaApp extends JFrame {
private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; // 验证码字符集
private int captchaLength = 4; // 验证码长度
public CaptchaApp() {
setTitle("验证码验证");
setSize(300, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建两个文本框,第一个用于显示验证码,第二个供用户输入
JTextField displayField = new JTextField(captchaLength);
displayField.setEditable(false); // 用户只读
JTextField userInputField = new JTextField(captchaLength);
userInputField.setEditable(true); // 用户可以编辑
add(displayField, BorderLayout.NORTH);
add(userPasswordField, BorderLayout.CENTER);
// 添加提交按钮,每次点击都会生成新验证码并验证
JButton submitButton = new JButton("验证");
submitButton.addActionListener(e -> {
String input = userInputField.getText();
// 清空用户输入框
userInputField.setText("");
// 每次点击都会生成新的验证码
generateRandomCode();
displayField.setText(generatedCode);
if (input.equals(generatedCode)) {
JOptionPane.showMessageDialog(this, "输入正确", "验证结果", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(this, "输入错误,请重试", "验证结果", JOptionPane.ERROR_MESSAGE);
}
});
add(submitButton, BorderLayout.SOUTH);
setVisible(true);
}
private void generateRandomCode() {
Random random = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < captchaLength; i++) {
int index = random.nextInt(CHARACTERS.length());
char ch = CHARACTERS.charAt(index);
sb.append(ch);
}
displayField.setText(sb.toString()); // 更新显示框的验证码内容
}
public static void main(String[] args) {
SwingUtilities.invokeLater(CaptchaApp::new);
}
}
```
在这个版本中,每次用户点击验证按钮,都会清空输入框并生成新的验证码。
阅读全文