栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java验证图片

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java验证图片

未加入图片,可以将图片按自己需要加入

import java.awt.Container;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.ArrayList;

import java.util.List;

import java.util.Random;



import javax.swing.*;



public class Cap12306 extends Jframe {

    JLabel[] jlCap = new JLabel[5];// 创建显示验证图标签数组

    JCheckBox[] jcb = new JCheckBox[jlCap.length];// 创建复选框组件数组

    JLabel jl;// 定义选择提示标签

    String capRanName;// 定义要选择的验证图类别

    int[] num = new int[jlCap.length];// 定义随机数变量数组

    public static List cap12306list = new ArrayList();



    public Cap12306() {// 构造方法初始化窗体

        setTitle("图形验证码");// 窗体标题

        setSize(500, 260);// 窗体大小

        setLocationRelativeTo(null);// 窗体居中

        setVisible(true);// 窗体可见

        setDefaultCloseOperation(EXIT_ON_CLOSE);// 关闭方式

        Container c = getContentPane();// 获取容器

        c.setLayout(null);// 设置绝对布局

        Font font = new Font("仿宋", Font.BOLD, 15);// 统一设置字体



        this.jl = new JLabel();// 新增提示标签

        this.jl.setBounds(10, 10, 220, 19); // 设置位置及大小

        this.jl.setFont(font);

        c.add(jl);// 向容器添加组件

        for (int i = 0; i < jlCap.length; i++) {

            this.jlCap[i] = new JLabel();// 验证图标签

            this.jlCap[i].setBounds(10 + i * 93, 40, 88, 88);

            c.add(jlCap[i]);

            this.jcb[i] = new JCheckBox("选择");// 复选框标签

            this.jcb[i].setBounds(25 + i * 93, 140, 70, 30);

            this.jcb[i].setFont(font);

            c.add(jcb[i]);

        }

        changeCap();// 设置5张随机验证图和要选择的验证图类别



        JButton enter = new JButton("确认");// 确认按钮

        enter.setFont(font);

        enter.setBounds(240, 180, 70, 26);

        c.add(enter);

        JButton change = new JButton("换一组");

        change.setFont(font);

        change.setBounds(340, 180, 85, 26); // 更换验证图按钮

        c.add(change);



        change.addActionListener(new ActionListener() {// 更换验证图按钮触发事件

            @Override

            public void actionPerformed(ActionEvent args) {

                changeCap();

            }

        });



        enter.addActionListener(new ActionListener() {// 确定按钮触发事件匿名内部类

            @Override

            public void actionPerformed(ActionEvent args) {

                if (ifCap()) {// 验证图勾选正确则弹出正确对话框,否则弹出错误对话框

                    JOptionPane.showMessageDialog(null, "验证通过,将进入系统!", "图形验证码", JOptionPane.WARNING_MESSAGE);

                    System.exit(0);// 退出程序

                } else {

                    JOptionPane.showMessageDialog(null, "验证失败,请重新验证!", "图形验证码", JOptionPane.ERROR_MESSAGE);

                    changeCap();// 更换验证图

                }

            }

        });

    }



    public boolean hasRan(int c, int ran) {// 判断随机数是否重复方法

        for (int i = 0; i < c; i++) {

            if (num[i] == ran) {

                return true;// 有重复

            }

        }

        return false;// 不重复

    }



    public void changeCap() {// 更换验证图方法

        Random random = new Random();

        for (int i = 0; i < num.length; i++) {

            int ran = random.nextInt(cap12306list.size());

            while (hasRan(i, ran)) {

                ran = random.nextInt(cap12306list.size());

            }

            num[i] = ran;

            Capurl capurl = cap12306list.get(num[i]);

            this.jlCap[i].setIcon(capurl.iconUrl);// 重新设置验证图

            this.jcb[i].setSelected(false);

        }

        int ran = num[random.nextInt(num.length)];// 5张验证图中随机抽取一张

        capRanName = cap12306list.get(ran).name;

        jl.setText("请点击下面图中 所有的" + capRanName);// 更新提示信息

    }



    public boolean ifCap() {// 验证勾选验证图是否正确

        for (int i = 0; i < num.length; i++) {

            if (cap12306list.get(num[i]).name.equals(capRanName)) {

                if (!jcb[i].isSelected()) {

                    return false;// 应勾选未勾选

                }

            } else {

                if (jcb[i].isSelected()) {

                    return false;// 勾选了不应勾选的

                }

            }

        }

        return true;// 全部勾选正确

    }



    public static void iniList(String name, int c) {// 初始化验证图信息

        for (int i = 1; i <= c; i++) {

            cap12306list.add(new Capurl(name, "img_cap12306/" + name + '/' + name + i + ".png"));

        }

    }



    public static void main(String[] args) {

        iniList("本子", 6);// 批量添加验证图信息

        iniList("蜡烛", 6);

        iniList("礼花", 6);

        iniList("牌坊", 6);

        iniList("塔", 6);

        iniList("跳绳", 6);

        iniList("土豆", 6);

        iniList("钟", 6);

        new Cap12306();

    }

}



class Capurl {// 用来存储验证图类别和地址的类

    String name;

    Icon iconUrl;



    Capurl(String name, String url) {

        this.name = name;

        this.iconUrl = new ImageIcon(url);

    }

}



  • 作者:麦克猫Cat
  • 本文版权归作者和CSDN共有,欢迎交流
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/361506.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号