首页 > 其他分享 >图形验证码

图形验证码

时间:2024-09-29 23:00:50浏览次数:8  
标签:java 按钮 验证码 import new 图形 窗口

随机生成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 {
        @Override
        public 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);
    }
}

标签:java,按钮,验证码,import,new,图形,窗口
From: https://www.cnblogs.com/Wei-n/p/18440927

相关文章

  • 用户输入验证码程序
    原码:test.java:packagetuxing;importjavax.swing.ImageIcon;importjava.awt.Color;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjava.awt.Dimension;importjava.awt.FlowLayout;im......
  • 验证码
    importjavax.swing.;importjava.awt.;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.Random;publicclassCaptchaGUIextendsJFrame{privateJLabelcaptchaLabel;privateJTextFieldinputField;priv......
  • PbootCMS后台登录验证码不显示怎么回事?
    在PbootCMS后台登录时,如果验证码不显示,可能有几种原因。以下是一些常见的故障排查方法和解决方案:故障排查与解决方案1.检查浏览器设置清除缓存和Cookies:清除浏览器缓存和Cookies,尝试重新登录。禁用浏览器插件:禁用浏览器中的广告拦截插件或其他可能影响显示的插件,如A......
  • PbootCMS后台登录验证码有数值,但是看不清是怎么回事?
    当PbootCMS后台登录验证码在某些PHP版本下显示不清楚时,通常是因为PHP版本不兼容导致的。验证码背景图黑色和文字颜色深色相冲也会导致这个问题。以下是详细的解决方法:原因分析验证码背景图黑色和文字颜色深色相冲,导致验证码难以看清。这通常是由于PHP版本不兼容造成的。解决方......
  • 图形视频处理软件Adobe After Effects(AE2024)软件下载安装
    目录简介软件特点下载推荐硬件简介AdobeAfterEffects,简称AE,是Adobe公司推出的一款专业的图形视频处理软件。它广泛应用于电影、广告、电视等影视制作领域,特别是在视频特效和后期制作方面。AE以其强大的功能和灵活的操作,成为设计和视频特技领域的首选工具,适合电视台、......
  • 解决 PBootCMS 后台登录不显示验证码的问题
    编辑 php.ini 文件:在“PHP.INI设置”中,找到并编辑 php.ini 文件。确保以下配置项正确设置:;图片处理扩展extension=gd.so;图片缓存目录;可以设置为/tmp或其他临时目录session.save_path="/tmp";图片缓存权限session.save_handler=files;图片缓存......
  • PbootCms后台登陆不显示验证码【阿里云虚拟主机】
    问题描述在使用阿里云虚拟主机部署PBootCMS时,后台登录界面不显示验证码图片。这通常是由于阿里云虚拟主机的配置问题导致的。解决方案登录阿里云控制台进入虚拟主机管理进入高级环境设置编辑 php.ini 文件详细步骤登录阿里云控制台登录阿里云官网:https://www.al......
  • 打卡信奥刷题(800)用Scratch图形化工具信奥P8241[普及组/提高] [COCI2013-2014#3] RIJE
    [COCI2013-2014#3]RIJEČI题目描述一天,Mirko发现了一个非常大的屏幕,这个屏幕上一开始只有一个字母A\texttt{A}A。Mirko在这个屏幕旁边找到了一个按钮。当他按一次时......
  • WPF 基础 2D 图形学知识 判断点是否在线段上
    在知道一个使用两个点表示的线段,和另一个点,求另一个点是否在线段上本文算法属于通用的算法,可以在WPF和UWP和Xamarin等上运行,基本上所有的.NET平台都能执行如下图,如果点在线段上,那么修改线段颜色假定有线段的定义如下publicrecordLine{publicPo......
  • pbootcms留言板取消验证码提交自定义表单时取消验证码
    在PBootCMS中取消留言板的验证码功能,可以通过后台的全局配置来进行设置。以下是具体的步骤:步骤详解登录后台:使用管理员账号登录PBootCMS后台。进入全局配置:在后台菜单中找到并点击 全局配置。进入配置参数:在全局配置页面中找到并点击 配置参数。进入安全......