【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】,对【算法设计与分析】感兴趣的可以免费订阅【算法设计与分析】的专栏,如果我的文章有帮助到你,麻烦来个一键三连奥,这将是对我莫大的鼓励,我将为大家带来更加优质的文章!我们可以一起进步,每天进步一点点,我将会给你带来巨大的【收获与惊喜】💝💝!