当前位置: 首页 > news >正文

利用Java进行验证码的实现——字母数字验证码

我主要使用ValidateCode组件实现字母数字验证码,利用ValidateCode的构造方法(图像宽度,图像高度,验证码位数,障碍线个数)、getBuffedImg()、getCode()等方法实现验证码,这样代码量小,使用方便,实现容易。

图2.1.1 ValidateCode包导入

程序代码如下:

package alphanum;
import javax.swing.JOptionPane;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import cn.dsna.util.images.ValidateCode;
public class TestValidateCode {private static JFrame valFrm() { // 添加窗体JFrame jFrame = new JFrame("字母数字验证码");jFrame.setSize(300, 400);jFrame.setLayout(null);jFrame.setVisible(true);return jFrame;}public static void showVal() { // 验证码添加ValidateCode validateCode = new ValidateCode(200, 70, 4, 100); // 实例化验证码组件JLabel jLabel = new JLabel(); // jlabel用于显示验证码图像jLabel.setBounds(50, 50, 200, 70);ImageIcon valImg = new ImageIcon();valImg.setImage(validateCode.getBuffImg()); // 使用getBuffImg获取BufferedImage对象jLabel.setIcon(valImg); // 将验证码图像显示JFrame jFrame = valFrm();//JLabel codeLabel = new JLabel(validateCode.getCode()); // 使用getCode方法获取验证码//codeLabel.setBounds(120, 150, 100, 30);JTextField inputField = new JTextField();inputField.setBounds(100, 200, 100, 30);JButton verifyButton = new JButton("验证");verifyButton.setBounds(110, 250, 80, 30);verifyButton.addActionListener(e -> {String userInput = inputField.getText().trim();if (userInput.equalsIgnoreCase(validateCode.getCode())) {JOptionPane.showMessageDialog(jFrame, "验证成功!", "提示", JOptionPane.INFORMATION_MESSAGE);} else {JOptionPane.showMessageDialog(jFrame, "验证失败!", "提示", JOptionPane.ERROR_MESSAGE);}});jFrame.add(jLabel);//jFrame.add(codeLabel);jFrame.add(inputField);jFrame.add(verifyButton);}public static void main(String[] args) {showVal();}
}

运行结果如下: 

 

 

相关文章:

  • FPGA基础 -- Verilog 数据流建模
  • WPF入门 #1 WPF布局基础、WPF样式基础、WPF控件模板、WPF数据模板
  • Python笔记1
  • 影刀rpa-3步获取社区信息
  • Dify动手实战教程(入门-猜病、哄哄模拟器)
  • singlefligt使用方法和源码解读
  • MySQL 索引和select优化
  • vuex中的辅助函数怎样使用
  • P7 QT项目----会学天气预报
  • 初识树及二叉树
  • 18.字符串函数
  • 【Redis】持久化机制:RDB / AOF 的应用与场景
  • 48-Oracle CDB下的SID-实例名-服务名
  • LVS+Keepliaved高可用群集
  • 【web应用】Vue 3 中实现 Chart.js 柱状图:详细指南
  • 【Leetcode】每日一题 —— No.2966
  • new()和new[]有什么区别?
  • 12.8Java Swing 中的MVC
  • MySQL 类型转换与加密函数深度解析
  • 【AI Study】第四天,Pandas(1)- 基础知识
  • 淄博网站建设 招聘/郑州seo方案
  • 建站行业前景怎么样/北京seo专员
  • 长春网站seo哪家好/大量微信群推广代发广告
  • 保险公司官网/谷歌seo推广公司
  • 专业制作网站建设/百度搜索关键词排名优化技术
  • 专业建设网站应该怎么做/关键词优化排名软件流量词