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; }
}

最新文章

  1. Integer.valueof(String s)和Integer.parseInt(String s)的具体区别是什么?
  2. 16-腾讯-intership-面试
  3. 招聘高级.Net工程师
  4. 使用js进行string和json之间转换的方法
  5. PHP中的位运算与位移运算(其它语言通用)
  6. 调研Android平台开发环境的发展演变
  7. Understanding Python metaclasses
  8. POJ2186 POPULAR COW
  9. 转移部分博客到CSDN之中
  10. 手把手教你写LKM rookit! 之 杀不死的pid&amp;root后门
  11. MVC中关于JSON的处理
  12. BZOJ_1009_[HNOI2008]GT考试_KMP+矩阵乘法
  13. Mac安装Python3后,如何将默认执行的Python2改为Pyhton3
  14. zabbix 自定义监控 排除带报错提示
  15. Unity之日志管理
  16. 【转】“菜”鸟理解.NET Framework(CLI,CLS,CTS,CLR,FCL,BCL)
  17. PadLeft 补零
  18. Webpack简易入门教程
  19. bzoj2337 XOR和路径
  20. Js 事件详解

热门文章

  1. 建筑行业如何用BPM替换OA?
  2. Ubuntu-搜狗输入法
  3. Markov Random Fields
  4. jQueryUI 之控件们
  5. 黑马程序员——【Java基础】——正则表达式
  6. linux grep 命令
  7. 【转】Styling And Animating SVGs With CSS
  8. Thrift 个人实战--Thrift 服务化 Client的改造
  9. 【 D3.js 入门系列 --- 4 】 如何使用scale(比例)
  10. Codeforces Round #158 (Div. 2)