验证码,相信大家一定知道,在上网的过程中,经常会用到。
前几天学习GUI的时候,刚学到的,今天也给各位马友分享一下我的这段代码。主要是用了Graphics类,以及这个类的常用方法!
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.Panel;
- import java.util.Random;
- import javax.swing.JFrame;
- /**
- * 验证码Demo
- * @author Shawn·Zhang
- *
- */
- public class Code {
- public static void main(String[] args) {
- final JFrame frame = new JFrame("验证码");
- final Panel panel = new CodePanel();
- frame.add(panel);
- frame.setSize(180,85);
- //frame.setSize(160, 40);//取消边框,大小可设置成画布大小
- frame.setLocationRelativeTo(null);//窗口居中
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- //frame.setUndecorated(true);//可设置取消窗口
- frame.setVisible(true);
- }
- }
- class CodePanel extends Panel{
- public void paint(Graphics g) {
- //定义大小
- int width = 160;
- int height = 40;
- //定义背景
- g.setColor(Color.LIGHT_GRAY);
- g.fillRect(0, 0, width, height);
- //定义边框
- g.setColor(Color.BLACK);
- g.drawRect(0, 0, width-1, height-1);
- //随机颗粒
- Random r = new Random();
- for(int i=0; i<100; i++){
- int x = r.nextInt(width)-2;
- int y = r.nextInt(height)-2;
- g.drawOval(x, y, 2, 2);
- }
- //定义字体
- g.setFont(new Font("黑体",Font.BOLD,30));
- g.setColor(Color.GREEN);
- StringBuilder sb = new StringBuilder();
- for(int i=0; i<4; i++){
- char[] chs = ("0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM").toCharArray();
- int pos = r.nextInt(chs.length);
- char c = chs[pos];
- sb.append(c+" ");
- }
- //写入验证码
- g.drawString(sb.toString(), 20, 30);
- }
- }
复制代码
效果如图:
也可以选择去掉边框,效果如下图:
PS:以上便是如何制作验证码了,不知道视频中是否有讲解,若有,各位一笑了之;若没有,大家也可对这个小实例一起学习讨论!
|
|