验证码的制作

本文介绍了如何使用Java Swing组件来制作验证码。通过创建JLabel对象,绘制随机字母或数字,并设置颜色,最终利用setIcon()方法展示转化为Icon的图片验证码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般登录界面都需要用到验证码,下面简单说一下利用Java中的Swing组件制作验证码。
首先new一个JLabel对象,在其上面进行填充;
接着创建一个图片,在图片上画出验证码。要画验证码就必须定义画笔,利用画笔进行绘画。利用随机数,产生随机的验证字母或者数字以及验证码的颜色。
最后利用JLbel的setIcon()方法,将绘画好的图片显示出来。(注意,此方法只能接收Icon类型,所以在此之前,要将图片转换成Icon类型)

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class VerificationCode extends JFrame{

	private JLabel label;
	int width = 400,height = 180;
	public VerificationCode() {
		
		label = new JLabel();
		//图片
		BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		//创建画笔
		Graphics g = bi.getGraphics();
		//设置颜色
		Color color = Color.WHITE;
		g.setColor(color);
		//填充
		g.fillRect(0, 0, width, height);
		
		//写入验证码
		for(int i = 0 ;i<4;i++) {
			char chr = (char)(int)(Math.random()*26+65);
			int red = (int)(Math.random()*256);
			int green = (int)(Math.random()*256);
			int blue = (int)(Math.random()*256);
			Color color1 = new Color(red,green,blue);
			g.setColor(color1);
			g.setFont(new Font("微软雅黑", Font.ITALIC, 40));
			g.drawString(chr+"", 27+100*i, 100);
		}
		
		
		//绘制干扰点
		//绘制小椭圆
		/*Random r =new Random();
		for (int i = 0; i < 1000; i++) {
			int red = (int)(Math.random()*256);
			int green = (int)(Math.random()*256);
			int blue = (int)(Math.random()*256);
			Color color1 = new Color(red, green, blue);
			g.setColor(color1);
			int x = r.nextInt(width)-2;
			int y = r.nextInt(height)-2;
			g.drawRect(x, y, 2, 2);
		}*/
		
		//绘制直线
		for(int i = 0;i<700;i++) {
			int red = (int)(Math.random()*256);
			int green = (int)(Math.random()*256);
			int blue = (int)(Math.random()*256);
			Color color1 = new Color(red, green, blue);
			g.setColor(color1);
			int x = (int)(Math.random()*width);
			int y = (int)(Math.random()*height);
			int width1 = (int)(Math.random()*5+1);
			int height1 = (int)(Math.random()*5+1);
			g.drawRect(x, y, width1, height1);
			
		}
		
		Icon icon = new ImageIcon(bi);//将bi转换程Icon类型
		//定义此组件将要显示的图标。只接收Icon类型的setIcon(Icon icon)
		label.setIcon(icon);
		add(label);
		setBounds(100, 100, width, height);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new VerificationCode();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值