验证码I
2024-10-14 16:24:54
package com.ah.testjava.validatecode; import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.util.Random; import javax.swing.JFrame;
import javax.swing.JPanel; public class 验证码 extends JFrame { public 验证码() {
setVisible(true);
setSize(800, 600);
setDefaultCloseOperation(EXIT_ON_CLOSE); MyJp jp = new MyJp();
this.add(jp);
} public static void main(String[] args) {
new 验证码();
}
}
package com.ah.testjava.validatecode; import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Random; import javax.swing.JPanel; public class MyJp extends JPanel {
public MyJp(){ } @Override
public void paintComponent(Graphics g) {
BufferedImage vc = createVCode();
g.drawImage(vc,0,0,100,30,null);
} public BufferedImage createVCode() {
int nStrfontSize=30;
int nStrY=30;
int width = 100;
int height = 30;
// 创建一个画布
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 创建画笔
Graphics g = image.getGraphics();
// 设置画笔颜色
g.setColor(Color.white);
// 填充背景颜色
g.fillRect(0, 0, width, height);
// 创建将要输出的内容
char[] words = "01234567890abcdefghijklmn马蓉王宝强赵薇宋哲".toCharArray();
// 创建随机对象(用于随机选择要生成的验证码和颜色)
Random rnd = new Random(); // 画圆点
for (int i = 0; i < 200; i++) {
// 设置画笔颜色
g.setColor(new Color(rnd.nextInt(255), rnd.nextInt(255), rnd
.nextInt(255)));
// 画椭圆
g.drawOval(rnd.nextInt(width), rnd.nextInt(height), 1, 1);
} // 创建一个临时变量用于拼接生成的验证码
String sessionCode = ""; // 生成4位验证码
for (int i = 0; i < 4; i++) {
// 使用画笔,在画布上写字
g.setColor(new Color(rnd.nextInt(255), rnd.nextInt(255), rnd
.nextInt(255)));
// 设置字体相关
g.setFont(new Font("微软雅黑", Font.BOLD, nStrfontSize));
// 获取当前产生的验证码(单个)
String currentCode = words[rnd.nextInt(words.length)] + "";
// 每次将生成的结果拼接起来
sessionCode += currentCode;
// 在画布上写文字,并且设置文字的 横坐标和纵坐标
g.drawString(currentCode, i * 20 + 10, nStrY); }
return image; }
}
最新文章
- Integer.valueof(String s)和Integer.parseInt(String s)的具体区别是什么?
- 16-腾讯-intership-面试
- 招聘高级.Net工程师
- 使用js进行string和json之间转换的方法
- PHP中的位运算与位移运算(其它语言通用)
- 调研Android平台开发环境的发展演变
- Understanding Python metaclasses
- POJ2186 POPULAR COW
- 转移部分博客到CSDN之中
- 手把手教你写LKM rookit! 之 杀不死的pid&;root后门
- MVC中关于JSON的处理
- BZOJ_1009_[HNOI2008]GT考试_KMP+矩阵乘法
- Mac安装Python3后,如何将默认执行的Python2改为Pyhton3
- zabbix 自定义监控 排除带报错提示
- Unity之日志管理
- 【转】“菜”鸟理解.NET Framework(CLI,CLS,CTS,CLR,FCL,BCL)
- PadLeft 补零
- Webpack简易入门教程
- bzoj2337 XOR和路径
- Js 事件详解