随机生成6位验证码,包含数字和大小写字母,可生成为图形,在界面中输入验证码进行验证
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.util.Random;class CaptchaGenerator extends JFrame { //创建一个窗口界面private JLabel captchaLabel; //显示生成的验证码图像private JTextField userInputField; //接受用户输入的验证码private String captchaCode; //存储生成的验证码字符串// 构造方法,设置窗口基本属性public CaptchaGenerator() {setTitle("验证码生成器");setSize(300, 150); //设置窗口的大小setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口关闭时退出程序setLayout(new FlowLayout()); //设置窗口的布局为流式布局,组件将从左到右排列// 生成随机验证码captchaCode = generateRandomCode(6);// 创建验证码图像captchaLabel = new JLabel(new ImageIcon(createCaptchaImage(captchaCode)));add(captchaLabel); //将验证码标签添加到窗口中// 用户输入框userInputField = new JTextField(10); //创建一个文本输入框,宽度为10个字符add(userInputField); //将输入框添加到窗口中// 验证按钮JButton verifyButton = new JButton("验证"); //创建一个按钮verifyButton.addActionListener(new VerifyButtonListener()); //为按钮添加事件监听器,点击按钮时将触发add(verifyButton); //将按钮添加到窗口中setVisible(true);}// 生成随机验证码private String generateRandomCode(int n) {Random r=new Random();String code = "";for (int i=1 ; i<=n ; i++){int type = r.nextInt(3);switch (type){case 0:code += r.nextInt(10);break;case 1:char c1 = (char)(r.nextInt(26) + 65);code += c1;break;case 2:char c2 = (char)(r.nextInt(26) + 97);code += c2;break;}}return code;}// 生成验证码图像private BufferedImage createCaptchaImage(String code) {int width = 150;int height = 50;BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);Graphics g = image.getGraphics();// 设置背景色g.setColor(Color.LIGHT_GRAY);g.fillRect(0, 0, width, height); //绘制一个填充的矩形,作为背景// 设置字体和颜色g.setFont(new Font("楷体", Font.BOLD, 30));g.setColor(Color.BLACK);// 绘制验证码g.drawString(code, 20, 35); //在图像中绘制验证码字符串,指定文本的位置g.dispose();return image;}// 验证按钮监听器private class VerifyButtonListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {String userInput = userInputField.getText();// 获取用户输入的验证码if (userInput.equals(captchaCode)) {JOptionPane.showMessageDialog(null, "验证码正确,验证通过!");} else {JOptionPane.showMessageDialog(null, "验证码错误,请重试!");}}}// 主方法public static void main(String[] args) {SwingUtilities.invokeLater(CaptchaGenerator::new);}
}