Swing图形界面实现可动态刷新的验证码
作者:Joker_Ye 发布时间:2022-03-27 08:08:50
标签:Swing,验证码
本文实例为大家分享了Swing实现可动态刷新的验证码的具体代码,供大家参考,具体内容如下
不多,code代码如下:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Random;
import javax.swing.JFrame;
public class CheckCode extends JFrame {
private static Random random = new Random();
private int width = 53;//验证码宽度
private int height =25;//验证码高度
private int font_size = 20;//验证码颜色
private int x = 100;//验证码所在窗体X坐标
private int y = 100;//验证码所在窗体Y坐标
private int jam = 5;//干扰元素 建议使用 4~7 之间的数字
private String code = "";//保存验证码
public CheckCode(){//初始化窗体信息
super("验证码");
setVisible(true);
setBounds((Toolkit.getDefaultToolkit().getScreenSize().width-300)/2, (Toolkit.getDefaultToolkit().getScreenSize().height-300)/2, 300, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
repaint();
}
});
}
public Color getRandomColor(){//获得随机颜色
int R=random.nextInt(255),G=random.nextInt(255),B=random.nextInt(255);
return new Color(R,G,B);
}
public String getRandomString(){//获得验证码
int num = random.nextInt(9);
code = num+"";
return num+"";
}
public void checkCode(Graphics g){// 绘画验证码
drawBorder(g);
drawCode(g);
drawJam(g);
}
public void drawBorder(Graphics g){//绘画边框和背景
Color gc = g.getColor();
g.setColor(Color.WHITE);
g.fillRect(x, y, width, height);
g.setColor(Color.BLACK);
g.drawRect(x, y, width, height);
g.setColor(gc);
}
public void drawCode(Graphics g){//绘画验证码内容
Color gc = g.getColor();
for(int i=0;i<4;i++){
g.setColor(getRandomColor());
g.setFont(new Font("宋体",Font.BOLD,font_size));
g.drawString(getRandomString(), x+5+(i*12), y+font_size);
}
g.setColor(gc);
}
public void drawJam(Graphics g){//绘画干扰元素
Color gc = g.getColor();
for(int i=0;i<jam;i++){
g.setColor(getRandomColor());
g.drawLine(x+random.nextInt(width), y+random.nextInt(height), x+random.nextInt(width), y+random.nextInt(height));
}
g.setColor(gc);
}
public void paint(Graphics g) {
Color c = g.getColor();
g.drawString("单击可刷新验证码", 30, 50);
checkCode(g);
g.setColor(c);
}
public static void main(String[] args) {
new CheckCode();
}
}


猜你喜欢
- 本文实例为大家分享了Android简单的自定义标题栏,供大家参考,具体内容如下android自定义控件向来都是开发者最头疼的,但是我们要有那
- 在C#中通过使用方法来获取返回值时,通常只能得到一个返回值。因此,当一个方法需要返回多个值的时候,就需要用到ref和out,那么这两个方法区
- 实现定时器有很多种方式,在这里我简单的介绍几种方式 (1)使用Handler + Runnable的方式 Handler handler =
- using System;using System.Data;using System.Configuration;using System
- WPF动画效果系列WPF实现动画效果(一)之基本概念WPF实现动画效果(二)之From/To/By 动画WPF实现动画效果(三)之时间线(T
- 先看下面图片:这是我在做登录页面的时候,调用系统的ProgressDialog 进行等待,可是看起来很不协调,左边的等待图片过大,右边文字过
- 本文实例讲述了C#使用文件流读取文件的方法。分享给大家供大家参考。具体如下:using System;using System.IO;nam
- 获取手机唯一标识 拼接的方式获取手机唯一标识第一种方式是获取IMEI,但是有的手机如果不是正品的话,就获取不到所以通过这一种方式还是会出现有
- 在5.2.1节和5.2.2节介绍了<a>标签以及TextView自动识别的特殊文本(网址、电话号、Email等),这些都可以通过
- 本文实例讲述了C#操作注册表的方法。分享给大家供大家参考,具体如下:下面我们就来用.NET下托管语言C#注册表操作,主要内容包括:注册表项的
- java内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类 。在java的世界里,提供了匿名内部类语法,用于帮助大家简化代码,本文
- 本文实例讲述了C#生成二维码的方法。分享给大家供大家参考。具体实现方法如下:首先引用ThoughtWorks.QRCode.dll具体代码如
- 推荐教程IntelliJ IDEA 2020最新激活码(亲测有效,可激活至 2089 年)最新idea2021注册码永久激活(激活到2100
- 有的时候,我们需要对一堆数据进行统计分析后生成HTML或Excel格式报表。本来这并不是一件很难的事,但确是件比较麻烦的事情。最令人头痛的是
- 一、问题描述LBS位置服务是android应用中重要的功能,应用越来越广泛,下面我们逐步学习和实现lbs相关的应用如定位、地图、导航等,首先
- protected bool IsChineseLetter(string input,int index){int code = 0;in
- 一、概述有序数组中常常用到二分查找,能提高查找的速度。今天,我们用顺序查找和二分查找实现数组的增删改查。二、有序数组的优缺点优点:查找速度比
- 一,配置环境变量步骤1.右击桌面上的“此电脑”图标,选择属性。2.选择高级系统设置3.单击环境变量4.单击系统变量中的新建5.在变量名中输入
- 我们通过学习Java基础知识,让自己正式踏入学习Java语言的行列,这篇博客是用来让我们真正的了解并应用面向对象的思想来实现的。使用简单的J
- 最近在公司的功能需求中,需要实现可以签到的日历,签到后在签到过的日期做标志。本功能参考了网上一些大神的日历控件,在此基础上进行修改,已满足本