> 文档中心 > 【AWT绘图】在Java中如何生成动态的验证码?

【AWT绘图】在Java中如何生成动态的验证码?

AWT绘图

Java中提供了一个Graphics类,这个类相当于一个抽象的画笔,在类中提供了很多的绘制图形的方法。

Graphics常用方法

方法名 作用
setColor() 指定上下文颜色,接收Color类型的参数
setFont() 指定上下文字体,接收Font类型参数
drawRect() 绘制矩形
drawOval() 绘制椭圆形
fillRect()方法和fillOval()方法 用当前颜色填充绘制完成的矩形和椭圆形
drawString() 绘制一段文本

在Panpel面板上绘制一张图片验证码

 package AWT; ​ import java.awt.*; import java.util.Random; public class YanZhengMa {     public static void main(String[] args) {         final Frame frame=new Frame("验证码");         final Panel panel=new MyPanel();         frame.add(panel);         frame.setSize(200,100);         frame.setVisible(true);     } } class MyPanel extends Panel{     public void  paint(Graphics g){         //定义验证码图片的高度         int width=320;         //定义验证码图片的宽度         int height=180;         //设置上下文颜色         g.setColor(Color.LIGHT_GRAY);         //填充验证码背景         g.fillRect(0,0,width,height);         //设置上下文颜色         g.setColor(Color.BLACK);         //绘制边框         g.drawRect(0,0,width-1,height-1);         Random r=new Random();         for(int i=0;i<100;i++){             int x=r.nextInt(width)-2;             int y=r.nextInt(height)-2;             g.drawOval(x,y,2,2);         }         g.setFont(new Font("黑体",Font.BOLD,30));         g.setColor(Color.BLUE);         //生成随机数         char[] chars=("0123456789abcdefghijkmnopqrstuvwxyzABCDEFG"+"HIJKLMNPQRSTUVWXYZ").toCharArray();         StringBuilder sb=new StringBuilder();         for(int i=0;i<4;i++){             int pos=r.nextInt(chars.length);             char c=chars[pos];             sb.append(c+" ");         }         //写入验证码         g.drawString(sb.toString(),20,30);     } }

结果

 

用drawOval()方法在矩形中随机生成100个椭圆,作为验证码的干扰点,然后生成随机验证码,从chars字符数组中取出四个字符组成字符串,调用Graphics的drawString()方法将字符串绘制在矩形区域内。在主函数中,将对象panel添加到frame窗口中,窗口显示时,显示出在panel面板中绘制图形验证码。

⛵小结
以上就是我对于AWT生成动态验证码的详细分析,学会如何设置动态验证码将会提高我们信息的安全性,避免一些不必要的麻烦!

如果这篇【文章】有帮助到你,希望可以点个赞👍,创作不易,如果有对【Java基础】【后端技术】、【数据结构】【Linux操作系统】感兴趣的小可爱,也欢迎关注 【LNORA】,对【算法设计与分析】感兴趣的可以免费订阅【算法设计与分析】的专栏,如果我的文章有帮助到你,麻烦来个一键三连奥,这将是对我莫大的鼓励,我将为大家带来更加优质的文章!我们可以一起进步,每天进步一点点,我将会给你带来巨大的【收获与惊喜】💝💝