Java Swing 图形界面实现验证码(验证码可动态刷新)
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();
}
}
Java Swing 图形界面实现验证码(验证码可动态刷新)的更多相关文章
- Java Swing 图形界面开发(目录)
		Java Swing 图形界面开发(目录) 2017年05月30日 23:50:42 阅读数:5228 本文链接: http://blog.csdn.net/xietansheng/article/d ... 
- Java Swing图形界面开发
		本文转自xietansheng的CSDN博客内容,这是自己见过的最通俗易懂.最适合快速上手做Java GUI开发的教程了,这里整合一下作为自己以后复习的笔记: 原文地址:https://blog.cs ... 
- Java Swing 图形界面开发
		https://blog.csdn.net/xietansheng/article/details/72814492 
- JAVA简单Swing图形界面应用演示样例
		JAVA简单Swing图形界面应用演示样例 package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗体 * @author l ... 
- 实验十四   第九组 张燕~杨蓉庆~杨玲 Swing图形界面组件
		实验十四 Swing图形界面组件 8-11-29 理论知识 Swing和MVC设计模式 (1)设计模式(Design pattern)是设计者一种流行的 思考设计问题的方法,是一套被反复使用,多数人 ... 
- 实验十四  Swing图形界面组件
		实验十四 Swing图形界面组件 实验时间 20178-11-29 1.实验目的与要求 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及常用API: 2.实验内容和 ... 
- Java自学-图形界面 容器
		Swing 的容器 JFrame和JDialog java的图形界面中,容器是用来存放 按钮,输入框等组件的. 窗体型容器有两个,一个是JFrame,一个是JDialog 步骤 1 : JFrame ... 
- 【计项02组01号】Java版图形界面计算器
		Java版图形界面计算器1.0版本 项目分析[1.0] 组成部分 代码结构 (1)窗口的创建 在<JDK 核心 API>中我们提到,创建一个窗口需要使用 JFrame 类.在本实验中,我们 ... 
- Java的图形界面依然是跨平台的
		Awt:抽象窗口工具箱,它由三部分组成: ①组件:界面元素: ②容器:装载组件的容器(例如窗体): ③布局管理器:负责决定容器中组件的摆放位置. 图形界面的应用分四步: ① 选择一个容器: ⑴wind ... 
随机推荐
- webpack引入handlebars报错'You must pass a string or Handlebars AST to Handlebars.compile'
			背景: webpack作为一个部分替代打包工具和模块化工具的优秀选择出现,作为尝试,也为了构建自己习惯的前端开发方式,我尝试了将webpack和自己常用handlebars模板引擎结合.整体项目背景为 ... 
- C++ Primer 5 CH6 函数
			6.1 函数基础 函数包括:返回类型.函数名字.形参.函数体. 通过 "调用运算符"(一对圆括号)来执行函数,它作用于一个表达式,该表达式是函数或者指向函数的指针. 函数调用完成两 ... 
- Unity SteamVR插件集成
			重要组件 SteamVR_Camera VR摄像机,主要功能是将Unity摄像机的画面进行变化,形成Vive中的成像画面 使用方法: l 在任一个摄像机上增加脚本 l 点击Expand按钮 完成以上操 ... 
- javaEE与JSP基础
			JSP基础 1. jsp的作用: * Servlet: > 缺点:不适合设置html响应体,需要大量的response.getWriter().print("<html ... 
- 任务一:零基础HTML编码练习
			任务目的 了解HTML的定义.概念.发展简史 掌握常用HTML标签的含义.用法 能够基于设计稿来合理规划HTML文档结构 理解语义化,合理地使用HTML标签来构建页面 任务描述:完成一个HTML页面代 ... 
- Diary of Codeforces Round #402 (Div. 2)
			这一场的表现可以用"全程智障"4个字,生动传神地描述出来. About 写题: A. 写了一堆if比较大小, 这很勤勉.(绝对值君对自己の存在感为0表示很难过.) B. 题,直接读 ... 
- [原]node.js使用感想
			最近尝试了使用node.js,但因为不是太深入(小项目,还没做完),所以不能谈心得谈经验,就来谈谈使用感想. node.js和以往的cgi接口的服务器+cgi程序(如apache+phpmod)中的单 ... 
- TabBar自定义方式(一)
			1.思路:创建一个继承UIView的TabBar类,并将需要的item添加到TabBar上面去,并用代理来处理相应的时间 [self.view bringSubviewToFront:self.one ... 
- Centos7上安装Kubernetes集群部署docker
			一.安装前准备1.操作系统详情需要三台主机,都最小化安装 centos7.3,并update到最新 [root@master ~]# (Core) 角色 主机名 IPMaster master 192 ... 
- python css概述
			1. 概述 css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化. 存在方式有三种:元素内联.页面嵌入和外部引入,比较三种方式的优缺点. 语法:style ... 
