用Java制作一个简单的图片验证码
//Java实现简单验证码功能
package project;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class denglu extends JFrame {
private JLabel name, pass, card, imageCard;
private JTextField nameText, passText, cardText;
private JButton login;
private int width = 100, height = 30;
private String str = "";
public denglu() {
setTitle("登陆窗体");
setFont(new Font("", Font.BOLD, 24));
setLayout(null);// 自定义布局
// 负责产生验证码图片
Icon icon = new ImageIcon(getCardImage(width, height));
name = new JLabel("账 号");
pass = new JLabel("密 码");
card = new JLabel("验证码");
imageCard = new JLabel(icon);
nameText = new JTextField();
passText = new JTextField();
cardText = new JTextField();
login = new JButton("登 录");
name.setBounds(80, 20, 60, 30);
pass.setBounds(80, 60, 60, 30);
card.setBounds(80, 100, 60, 30);
imageCard.setBounds(240, 100, width, height);
nameText.setBounds(150, 20, 200, 30);
passText.setBounds(150, 60, 200, 30);
cardText.setBounds(150, 100, 80, 30);
login.setBounds(120, 160, 220, 30);
add(name);
add(pass);
add(card);
add(imageCard);
add(nameText);
add(passText);
add(cardText);
add(login);
//注册事件
addMouseListener(new ChangeCard());
setBounds(0, 0, 450, 260);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public Image getCardImage(int width, int height) {
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
int red1 = (int) (Math.random() * 256);
int green1 = (int) (Math.random() * 256);
int blue1 = (int) (Math.random() * 256);
Color c1 = new Color(red1, green1, blue1);
g.setColor(c1);
g.fillRect(0, 0, width, height);
//生成文字
int red2 = (int) (Math.random() * 256);
int green2 = (int) (Math.random() * 256);
int blue2 = (int) (Math.random() * 256);
Color c2 = new Color(red2, green2, blue2);
str = "";
for (int i = 0; i < 4; i++) {
char ch = (char)((int)(Math.random()*26+65));
str+=ch;
}
//加入干扰点
for (int i = 0; i < 60; i++) {
int red11 = (int)(Math.random()*256);
int green11 = (int)(Math.random()*256);
int blue11 = (int)(Math.random()*256);
Color color3 = new Color(red11, green11, blue11);
g.setColor(color3);
int x1 = (int)(Math.random()*width);
int y1 = (int)(Math.random()*height);
int x2 = (int)(Math.random()*width);
int y2 = (int)(Math.random()*height);
g.drawLine(x1, y1, x2, y2);
}
g.setColor(c2);
int x = (int)(Math.random()*(width/3));
int y = (int)(Math.random()*(height/2)+10);
g.setFont(new Font("", Font.BOLD, 24));
g.drawString(str, x, y);
return image;
}
//监听类:鼠标单击时执行,即单击验证码时再次随机产生一个验证码
class ChangeCard implements MouseListener{
@Override
public void mouseClicked(MouseEvent e) {
Icon icon = new ImageIcon(getCardImage(width, height));
imageCard.setIcon(icon);
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}
public static void main(String[] args) {
new denglu();
}
}
用Java制作一个简单的图片验证码的更多相关文章
- Expression Blend4经验分享:制作一个简单的图片按钮样式
这次分享如何做一个简单的图片按钮经验 在我的个人Silverlight网页上,有个Iphone手机的效果,其中用到大量的图片按钮 http://raimon.6.gwidc.com/Iphone/de ...
- 【数据结构与算法】Java制作一个简单数组类
bobo老师的玩转算法系列–玩转数据结构 简单记录 文章目录 不要小瞧数组 - 制作一个数组类 1 .使用Java中的数组 数组基础 简单使用 2.二次封装属于我们自己的数组 数组基础 制作属于我们自 ...
- java制作一个简单的抽签程序
首先需要导入import java.util.Random;才能使用随机类Random:Random生成随机数介绍:https://www.cnblogs.com/prodigal-son/p/128 ...
- 制作一个简单的WPF图片浏览器
原文:制作一个简单的WPF图片浏览器 注:本例选自MSDN样例,并略有改动.先看效果: 这里实现了以下几个功能:1. 对指定文件夹下所有JPG文件进行预览2. 对选定图片进行旋转3. 对选定图片 ...
- 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小
原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...
- 一般处理程序生成简单的图片验证码并通过html验证用户输入的验证码是否正确
一般处理程序生成简单的图片验证码并通过html验证用户输入的验证码是否正确 最近没事研究了下验证码的的动态生成及通过cookie实现HTML页面对用户输入的验证码的校验,简要如下: 1.写 ...
- TensorFlow练习13: 制作一个简单的聊天机器人
现在很多卖货公司都使用聊天机器人充当客服人员,许多科技巨头也纷纷推出各自的聊天助手,如苹果Siri.Google Now.Amazon Alexa.微软小冰等等.前不久有一个视频比较了Google N ...
- 手把手制作一个简单的IDEA插件(环境搭建Demo篇)
新建IDEA插件File --> new --> Project--> Intellij PlatForm Plugin-->Next-->填好项目名OK 编写插件新建工 ...
- 使用 java 实现一个简单的 markdown 语法解析器
1. 什么是 markdown Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的 ...
随机推荐
- (NO.00002)iOS游戏精灵战争雏形(四)
在Xcode打开MainScene,添加初始化代码如下: -(void)didLoadFromCCB{ NSAssert(_sprite1, @"_sprite1 must not nil& ...
- 01_Nginx安装,nginx下部署项目,nginx.conf配置文件修改,相关文件配置
1.下载Nginx,进入Nginx下载地址:http://nginx.org/ 点击nginx-1.8.0,进入:http://nginx.org/en/download.html,下载文件: ...
- 数据挖掘进阶之关联规则挖掘FP-Growth算法
数据挖掘进阶之关联规则挖掘FP-Growth算法 绪 近期在写论文方面涉及到了数据挖掘,需要通过数据挖掘方法实现软件与用户间交互模式的获取.分析与分类研究.主要涉及到关联规则与序列模式挖掘两块.关联规 ...
- android 开发从入门到精通
Android-Tips This is an awesome list of tips for android. If you are a beginner, this list will be t ...
- hbase thrift 访问队列
public class CallQueue implements BlockingQueue<Runnable> { private static Log LOG = LogFact ...
- 使用代码刷QQ的跨年红包
使用的库从这里找: https://github.com/GameTerminator/dont-touch-white 关键代码就是一个while循环加上drag. import com.andro ...
- HBase 索引创建
本文参考了文"mysql索引背后的数据结构及算法原理",之所以还要摘录,主要是为了形成hbase索引研究的开篇,弄明白什么索引的本质,如有版权问题,请及时通知. 索引的本质 索引是 ...
- LeetCode(62)-Two Sum
题目: Given an array of integers, return indices of the two numbers such that they add up to a specifi ...
- The table name must be enclosed in double quotation marks or sqare bracket while accessing EXCEL by
1 Preface DB Query Analyzer is presented by Master Gen feng, Ma from Chinese Mainland. It has Eng ...
- 万水千山ABP - 系统发布后迁移 CodeFirst 数据库[原创]
在项目开发的过程中,常会遇到项目发布后还变更数据库的情况.这时如何方便地进行数据库迁移呢 ? 下面直接列出操作的步骤: 1. 发布修改后的应用: 将最新版本的应用更新到目标机器中.更新的文件当然不包括 ...