java_AWT实现验证码

import java.awt.*;//验证码
import java.awt.event.*;
import java.util.Random;
public class TsetAWT
{
	public static void main(String[] args)
	{
		final Frame frame = new Frame("验证码");
		final Panel panel = new MyPanel();//创建Canvas对象
		frame.add(panel);
		frame.setSize(200,100);
		//将fame窗口居中
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
}
class MyPanel extends Panel
{
	public void paint(Graphics g)
	{
		int width = 160;//定义验证码图片的宽度
		int height = 40;//定义验证码图片的高度
		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 = ("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").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);//写入验证码
	}
}

此处不足在于点击验证码时验证码不改变,

放大和缩小窗口时验证码会改变,可以定义一个char数组,

只读取数组的最后四位便是验证码的值

改善:

完成了判断输入验证码是否正确:

//产生随机验证码
		char[] chars = ("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();
		StringBuilder sb = new StringBuilder();
		char[] array = new char[4];
		for(int i = 0; i < 4; i++)
		{
			int pos = r.nextInt(chars.length);
			char c = chars[pos];
			sb.append(c+" ");
			array[i] = c;
		}
		System.out.println(array);
		g.drawString(sb.toString(),20,30);//写入验证码
		Scanner s = new Scanner(System.in);
		String str = s.next();
		char[] array1 = str.toCharArray();
		String s_array = String.valueOf(array);;
		String s_array1 = String.valueOf(array1);
		if(s_array.equals(s_array1))
		{
			System.out.println("验证码输入正确");
		}
		else
		{
			System.out.println("验证码输入错误");
		}

猜你喜欢

转载自blog.csdn.net/hanxia159357/article/details/77035681
今日推荐