java随机生成四位字符验证码(使用Graphics绘图类)
2016-10-31 15:28
549 查看
/*使用绘图类Graphics实现随机生成四位验证码,随机颜色,随机字体*/
package com.itany.graphic;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.util.Random;
/*
* 随机数
*/
public class ValidateCode {
//随机字符
privatestatic StringBuilder sb =new
StringBuilder();
//随机类
privatestatic Random random =
new Random();
//范围参数
//字体
privatestatic String[] fontName={"幼圆","微软雅黑","新宋体","方正姚体","方正舒体","楷体","隶书","黑体"};
//样式
privatestatic
int[] fontStyle={Font.BOLD,Font.ITALIC,Font.ROMAN_BASELINE};
//大小
privatestatic
int[] fontSize={26,28,30,32,34,36};
//字符库
privatestatic String chs="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
publicstatic
void init(Graphics g){
//画矩形
g.setColor(Color.LIGHT_GRAY);
g.fill3DRect(5,5,
130,50,
false);
//随机四个数
randomNum(g);
//画干扰线
randomLine(g);
}
//画干扰线
privatestatic
void randomLine(Graphics g) {
for(int i=0;i<4;i++){
g.setColor(randomColor());
g.drawLine(random.nextInt(131)+5, random.nextInt(51)+5,
random.nextInt(131)+5, random.nextInt(51)+5);
}
}
/*
* 随机色
*/
privatestatic Color randomColor() {
returnnew Color(random.nextInt(256),
random.nextInt(256), random.nextInt(256));
}
/*
* 随机数
*/
privatestatic
void randomNum(Graphics g) {
String numStr = null;
for(int i=0;i<4;i++){
numStr = randomChar();
sb.append(numStr);
g.setColor(randomColor());
g.setFont(randomFont());
g.drawString(numStr, 30+i*20,40);
}
}
/*
* 随机码
*/
publicstatic String getCode(){
return sb.toString();
}
/*
* 随机字体
*/
privatestatic Font randomFont() {
int size = fontSize[random.nextInt(fontSize.length)];
int style =fontStyle[random.nextInt(fontStyle.length)] ;
String name=fontName[random.nextInt(fontName.length)];
Font f = new Font(name,style,size);
return f;
}
/*
*随机字符串
*/
privatestatic String randomChar() {
return chs.charAt(random.nextInt(chs.length()))+"";
}
}
调用方法如下:
JPanel pan = new JPanel(){
protected void paintComponent(Graphics g){
ValidateCode.init(g);//调用类方法初始化验证码
System.out.printIn(ValidateCode.getCode().toUpperCase());
}
}
package com.itany.graphic;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.util.Random;
/*
* 随机数
*/
public class ValidateCode {
//随机字符
privatestatic StringBuilder sb =new
StringBuilder();
//随机类
privatestatic Random random =
new Random();
//范围参数
//字体
privatestatic String[] fontName={"幼圆","微软雅黑","新宋体","方正姚体","方正舒体","楷体","隶书","黑体"};
//样式
privatestatic
int[] fontStyle={Font.BOLD,Font.ITALIC,Font.ROMAN_BASELINE};
//大小
privatestatic
int[] fontSize={26,28,30,32,34,36};
//字符库
privatestatic String chs="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
publicstatic
void init(Graphics g){
//画矩形
g.setColor(Color.LIGHT_GRAY);
g.fill3DRect(5,5,
130,50,
false);
//随机四个数
randomNum(g);
//画干扰线
randomLine(g);
}
//画干扰线
privatestatic
void randomLine(Graphics g) {
for(int i=0;i<4;i++){
g.setColor(randomColor());
g.drawLine(random.nextInt(131)+5, random.nextInt(51)+5,
random.nextInt(131)+5, random.nextInt(51)+5);
}
}
/*
* 随机色
*/
privatestatic Color randomColor() {
returnnew Color(random.nextInt(256),
random.nextInt(256), random.nextInt(256));
}
/*
* 随机数
*/
privatestatic
void randomNum(Graphics g) {
String numStr = null;
for(int i=0;i<4;i++){
numStr = randomChar();
sb.append(numStr);
g.setColor(randomColor());
g.setFont(randomFont());
g.drawString(numStr, 30+i*20,40);
}
}
/*
* 随机码
*/
publicstatic String getCode(){
return sb.toString();
}
/*
* 随机字体
*/
privatestatic Font randomFont() {
int size = fontSize[random.nextInt(fontSize.length)];
int style =fontStyle[random.nextInt(fontStyle.length)] ;
String name=fontName[random.nextInt(fontName.length)];
Font f = new Font(name,style,size);
return f;
}
/*
*随机字符串
*/
privatestatic String randomChar() {
return chs.charAt(random.nextInt(chs.length()))+"";
}
}
调用方法如下:
JPanel pan = new JPanel(){
protected void paintComponent(Graphics g){
ValidateCode.init(g);//调用类方法初始化验证码
System.out.printIn(ValidateCode.getCode().toUpperCase());
}
}
相关文章推荐
- 【Java】使用Servlet生成随机验证码图片
- 使用java代码生成随机验证码
- Java 使用JSP页面生成随机验证码
- 使用Java生成四位不重复的验证码
- 使用java随机生成验证码
- Java一行代码使用ASCII码原理生成随机字符
- 使用JAVA代码生成验证码
- Java随机生成验证码图片,并且保存到文件系统中
- 使用开源组件生成随机验证码
- Java随机生成验证码图片
- Java的随机验证码生成类
- [Java]生成32位随机字符ID
- 浅析使用ASP.NET生成随机验证码图片
- Java 生成随机验证码
- 使用java.lang.Math 生成随机数字
- Java使用patchca生成验证码
- [Java]生成32位随机字符ID
- 使用jsp生成验证码使用简单在java或jsp页面调用简单
- 使用技巧:Java实现随机验证码功能实例
- Java随机生成动态验证码