黑马程序员技术交流社区

标题: 给大家分享一段验证码生成的代码 [打印本页]

作者: 程序猿小哲    时间: 2015-9-17 10:46
标题: 给大家分享一段验证码生成的代码
验证码,相信大家一定知道,在上网的过程中,经常会用到。
前几天学习GUI的时候,刚学到的,今天也给各位马友分享一下我的这段代码。主要是用了Graphics类,以及这个类的常用方法!
  1. import java.awt.Color;
  2. import java.awt.Font;
  3. import java.awt.Graphics;
  4. import java.awt.Panel;
  5. import java.util.Random;

  6. import javax.swing.JFrame;
  7. /**
  8. * 验证码Demo
  9. * @author Shawn·Zhang
  10. *
  11. */
  12. public class Code {

  13.         public static void main(String[] args) {
  14.                 final JFrame frame = new JFrame("验证码");
  15.                 final Panel panel = new CodePanel();
  16.                 frame.add(panel);
  17.                 frame.setSize(180,85);
  18.                 //frame.setSize(160, 40);//取消边框,大小可设置成画布大小
  19.                 frame.setLocationRelativeTo(null);//窗口居中
  20.                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  21.                 //frame.setUndecorated(true);//可设置取消窗口
  22.                 frame.setVisible(true);
  23.         }

  24. }

  25. class CodePanel extends Panel{
  26.         public void paint(Graphics g) {
  27.                 //定义大小
  28.                 int width = 160;
  29.                 int height = 40;
  30.                 //定义背景
  31.                 g.setColor(Color.LIGHT_GRAY);
  32.                 g.fillRect(0, 0, width, height);
  33.                 //定义边框
  34.                 g.setColor(Color.BLACK);
  35.                 g.drawRect(0, 0, width-1, height-1);
  36.                 //随机颗粒
  37.                 Random r = new Random();
  38.                 for(int i=0; i<100; i++){
  39.                         int x = r.nextInt(width)-2;
  40.                         int y = r.nextInt(height)-2;
  41.                         g.drawOval(x, y, 2, 2);
  42.                 }
  43.                 //定义字体
  44.                 g.setFont(new Font("黑体",Font.BOLD,30));
  45.                 g.setColor(Color.GREEN);
  46.                 StringBuilder sb = new StringBuilder();
  47.                 for(int i=0; i<4; i++){
  48.                 char[] chs = ("0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM").toCharArray();
  49.                         int pos = r.nextInt(chs.length);
  50.                         char c = chs[pos];
  51.                         sb.append(c+" ");
  52.                 }
  53.                 //写入验证码
  54.                 g.drawString(sb.toString(), 20, 30);
  55.         }
  56. }
复制代码

效果如图:

也可以选择去掉边框,效果如下图:



PS:以上便是如何制作验证码了,不知道视频中是否有讲解,若有,各位一笑了之;若没有,大家也可对这个小实例一起学习讨论!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2