//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制作一个简单的图片验证码的更多相关文章

  1. Expression Blend4经验分享:制作一个简单的图片按钮样式

    这次分享如何做一个简单的图片按钮经验 在我的个人Silverlight网页上,有个Iphone手机的效果,其中用到大量的图片按钮 http://raimon.6.gwidc.com/Iphone/de ...

  2. 【数据结构与算法】Java制作一个简单数组类

    bobo老师的玩转算法系列–玩转数据结构 简单记录 文章目录 不要小瞧数组 - 制作一个数组类 1 .使用Java中的数组 数组基础 简单使用 2.二次封装属于我们自己的数组 数组基础 制作属于我们自 ...

  3. java制作一个简单的抽签程序

    首先需要导入import java.util.Random;才能使用随机类Random:Random生成随机数介绍:https://www.cnblogs.com/prodigal-son/p/128 ...

  4. 制作一个简单的WPF图片浏览器

    原文:制作一个简单的WPF图片浏览器 注:本例选自MSDN样例,并略有改动.先看效果: 这里实现了以下几个功能:1.  对指定文件夹下所有JPG文件进行预览2.  对选定图片进行旋转3.  对选定图片 ...

  5. 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小

    原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...

  6. 一般处理程序生成简单的图片验证码并通过html验证用户输入的验证码是否正确

    一般处理程序生成简单的图片验证码并通过html验证用户输入的验证码是否正确       最近没事研究了下验证码的的动态生成及通过cookie实现HTML页面对用户输入的验证码的校验,简要如下: 1.写 ...

  7. TensorFlow练习13: 制作一个简单的聊天机器人

    现在很多卖货公司都使用聊天机器人充当客服人员,许多科技巨头也纷纷推出各自的聊天助手,如苹果Siri.Google Now.Amazon Alexa.微软小冰等等.前不久有一个视频比较了Google N ...

  8. 手把手制作一个简单的IDEA插件(环境搭建Demo篇)

    新建IDEA插件File --> new --> Project--> Intellij PlatForm Plugin-->Next-->填好项目名OK 编写插件新建工 ...

  9. 使用 java 实现一个简单的 markdown 语法解析器

    1. 什么是 markdown Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的 ...

随机推荐

  1. C++对象模型(四):class成员初始化列表(Member Initialization List)

    本文是Inside C++ Object Model Chapter 2 部分的读书笔记. 编译器如何处理初始化成员列表的. 下列情况中,必须要使用member initialization list ...

  2. 自己动手写web框架----1

    本文可作为<<自己动手写struts–构建基于MVC的Web开发框架>>一书的读书笔记. 一个符合Model 2规范的web框架的架构图应该如下: Controller层的Se ...

  3. JavaScript进阶(八)JS实现图片预览并导入服务器功能

    JS实现导入文件功能       赠人玫瑰,手留余香.若您感觉此篇博文对您有用,请花费2秒时间点个赞,您的鼓励是我不断前进的动力,共勉!(PS:此篇博文是自己在午饭时间所写,为此没吃午饭,这就是程序猿 ...

  4. Android群英传笔记——第七章:Android动画机制和使用技巧

    Android群英传笔记--第七章:Android动画机制和使用技巧 想来,最 近忙的不可开交,都把看书给冷落了,还有好几本没有看完呢,速度得加快了 今天看了第七章,Android动画效果一直是人家中 ...

  5. Material Design5.x动画实现解析篇一

    Material Design设计语言动画篇共推出六种类型的动画效果: 1.Touch feedback(触摸反馈) 2.Reveal effect(揭露效果) 3.Activity transiti ...

  6. 通过COM组件方式实现java调用C#写的DLL文件

    转自这里 最近一段时间单位在做一个Web项目,工程师用JAVA语言,需要公用人员信息,统一用户名和密码,原有的平台中是用C#语言开发的,在网上查找解决方法,通过JAVA调用C#的DLL文件实现.网上资 ...

  7. Android studio导入工程很卡及下载网络jar很慢问题总结

    AndroidStudio导入项目一直卡在Building gradle project info,实际上是因为你导入的这个项目使用的gradle与你已经拥有的gradle版本不一致,导致需要下载该项 ...

  8. Android UI技巧(一)——Android中伸缩自如的9patch图片切法,没有美工自给自足

    Android UI技巧(一)--Android中伸缩自如的点9图片切法,没有美工自给自足 相信大家对.9 图片应该都很熟悉吧,有些人可能自己都会了,此篇献给那些不会的同学,咱们一起来聊聊.9图片的切 ...

  9. 数据包接收系列 — IP协议处理流程(一)

    本文主要内容:在接收数据包时,IP协议的处理流程. 内核版本:2.6.37 Author:zhangskd @ csdn blog IP报头 IP报头: struct iphdr { #if defi ...

  10. How to configure ODBC DSN to access local DB2 for Windows

    How to configure ODBC DSN to access local DB2 for Windows MA Genfeng (GuangdongUnitoll Services inco ...