Java验证码程序
1、设计思想
利用random的随机生成数字,利用for循环控制随机数字的个数来控制验证码的输出。
利用JFrame实现布局的管理,对登录框内容的位置进行管理。
2、流程图
3、源代码
denglu类
import javax.swing.*;
import java.awt.*;
import javax.swing.JFrame;
public class denglu extends JFrame{
JTextField jTextField; //定义文本框组件
JPasswordField jPasswordField; //定义密码框组件
JTextField jYanzhengField;//定义验证码框架组件
JLabel jl1,jl2,jl3; //用户名 密码
JButton jb1,jb2; //按钮
JPanel jp1,jp2,jp3,jp4,jp5; //边框
public denglu(){
// 创建组件
jTextField=new JTextField(10);
jPasswordField=new JPasswordField(10);
jYanzhengField=new JTextField(5);
jb1=new JButton("登录");
jb2=new JButton("快速注册");
jl1=new JLabel("登录名");
jl2=new JLabel("密 码");
jl3=new JLabel("验证码");
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
//设置布局
JFrame jf = new JFrame();
jf.setLayout(new GridLayout(5,2));
jp1.add(jl1);
jp1.add(jTextField);// 第一块面板 文本框和用户名
jp2.add(jl2);
jp2.add(jPasswordField);// 第二块面板 文本框和密码
jp3.add(jl3);
jp3.add(jYanzhengField);// 第三块面板 文本框和验证码
jp4.add(jb1);
jp4.add(jb2);// 第四块面板 登入 快速注册
jf.add(jp1);
jf.add(jp2);
jf.add(jp3);
jf.add(jp4);
//将四块面板添加到登录框上
//设置框架
jf.setTitle("登录");
jf.setSize(400, 300);
jf.pack();
Dimension screen = getToolkit().getScreenSize();
jf.setLocation((screen.width-getWidth())/2, (screen.height-getHeight())/2);
jf.setDefaultCloseOperation(EXIT_ON_CLOSE);
jf.setVisible(true);
}
}
yanzheng类
import java.awt.*;
import java.util.Random;
import javax.swing.JFrame;
public class yanzheng extends JFrame {
private static Random random = new Random();
private String code = "";//保存验证码
public yanzheng(){//初始化窗体信息
super("验证码");
setVisible(true);
setBounds((Toolkit.getDefaultToolkit().getScreenSize().width-300)/2, (Toolkit.getDefaultToolkit().getScreenSize().height-300)/2, 300, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public String randomcode(){//获得验证码
String code="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer s=new StringBuffer();
int num =random.nextInt(62);
sb.append(code.charAt(num));
return s.toString();
}
public void checkcode(Graphics a){// 设置验证码
drawCode(a);
}
public void drawCode(Graphics a){//设置验证码内容
for(int i=0;i<6;i++){
a.setFont(new Font("宋体",Font.BOLD,20));
a.drawString(randomcode(), 50+(i*12),70);
}
}
public void paint(Graphics a) {
checkcode(a);
}
// 实现
public static void main(String[] args) {
// TODO Auto-generated method stub
new yanzheng();
new denglu();
}
}
4、程序截图
5、实验总结
验证码:
利用random生成的随机数只能是int类型,不能是字符类型。
在绘制验证码图片时,用Graphics类传输paint绘画随机数字。
登录界面设计:
用JFrame的布局管理
标签组件:JLabel 按钮组件:JButton
字体设置:Font font=new Font("隶书",Font.ITALIC+Font.BOLD,28);
GridLayout布局管理器是以表格形式进行管理的,在使用此布局管理器时必须设置显示的行数与列数
JFrame类是一个容器,允许程序员把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。 。
JFrame jf=new JFrame("");//进行实例化窗体对象
使用Dimension类设置窗体的大小:getSize()和setSize(Dimension size),分别用来获得和设置方格的大小。
遇到的问题:用StringBuffer code="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";不能生成随机字符型而是全部输出
改为 String code="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer s=new StringBuffer();
int num =random.nextInt(62);
s.append(code.charAt(num));
return sb.toString();
验证能成功输出
Java验证码程序的更多相关文章
- java制作验证码(java验证码小程序)
手动制作java的验证码 Web应用验证码的组成: (1)输入框 (2)显示验证码的图片 验证码的制作流程: 生成验证码的容器使用 j2ee的servlet 生成图片需要的类: (1) Buffere ...
- springMVC+Java验证码完善注册功能
这篇文章简单的写了一个java验证码,为之前写过的springMVC注册功能加上验证码,验证码的作用就不多说了,防止机器人程序恶意注册什么的.. 其中User.java,加上了password和cod ...
- 验证码程序Demo
小伙伴都有这样的经历,册各种网站,总是输不对验证码,双十一那天狂买的小伙伴是不是对输入验证码有着不一样的感触呢,以前觉得验证码真是个麻烦鬼,一个不小心,一个眼拙,哎呦,没有输入正确,又是一阵子大眼瞪小 ...
- Java基础-输入输出-3.编写BinIoDemo.java的Java应用程序,程序完成的功能是:完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc。
3.编写BinIoDemo.java的Java应用程序,程序完成的功能是:完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc. try { FileInputStream in = ...
- Java基础-输入输出-2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt
2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt ...
- JAVA基础-输入输出:1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。
1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上. package Test03; ...
- 《java小应用程序(Applet)和java应用程序(Application)分别编写的简单计算器》
Application和Java Applet的区别.Java语言是一种半编译半解释的语言.Java的用户程序分为两类:Java Application和Java Applet.这两类程序在组成结构和 ...
- 《Java应用程序(Application)》
在编写Java应用程序(Application)时可以这样: 1,定义包名. 2, 导入相关的包. 3, 定义一个类. 4,定义相关变量. 5,定义构造函数.(在构造函数内调用init()方法和add ...
- Java 验证码、二维码
Java 验证码.二维码 资源 需要: jelly-core-1.7.0.GA.jar网站: http://lychie.github.io/products.html将下载下来的 jelly ...
随机推荐
- WPF Knowledge Points - 默认视图(DefaultView),CollectionSourceView,CollectionView的区别
这些天一直在做一些关于Treeview的事情,想写出来一些用法和心得.说到集合对象的显示和表现,CollectionSourceView和CollectionView有着至关重要的作用,所以在写Tre ...
- 阶段3 1.Mybatis_11.Mybatis的缓存_7 触发清空一级缓存的情况
如果数据库的数据和一级缓存的数据不一致了,怎么做到同步的呢? 增加一个更新 用户信息的方法 增加更新的节点配置 测试类增加测试方法.先查询id为41的 然后更新了41的数据.再次查询41的数据 先把更 ...
- Tensorflow 教程系列 | 莫烦Python
Tensorflow 简介 1.1 科普: 人工神经网络 VS 生物神经网络 1.2 什么是神经网络 (Neural Network) 1.3 神经网络 梯度下降 1.4 科普: 神经网络的黑盒不黑 ...
- HTML学习之==>DOM操作
DOM(Document Object Model 文档对象模型) 一个web页面的展示,是由html标签组合成的一个页面,dom对象实际就是将html标签转换成了一个文档对象.可以通过dom对象中j ...
- Jmeter JDBC请求---把数据库结果参数化传递到其他请求
摘要: 最近一个场景进行压力测试:生成商品id进行上下架和购买,记录写脚本的一个过程 1.在商品上架前需要准备商品ID,商品ID生成需要从数据库读取商品类别,从而生成商品ID,下面是从数据库:读取商品 ...
- Scratch少儿编程系列:(八)演奏简单音乐
一.程序说明 本程序,用来演奏简单音乐. 二.制作过程 1. 场景和角色的选择 场景选择“音乐和舞蹈”主题下的“party root”,角色沿用默认角色,如下图: 选择后效果如下图: 2. 切换到“脚 ...
- 关于linux中的目录配置标准以及文件基本信息
关于Linux中的目录配置标准 在查看docker.k8的运行日志,修改相关的运行记录的时候,学长总是能很快地找到目录,这个多多少少和Linux的FHS(File Hierarchy Standard ...
- win10家庭版安装Docker (Docker Toolbox)
开启CPU的虚拟化功能(自行百度)之前安装了VM所以这部跳过.具体查看可以打开任务管理器->性能->cpu 查看是否有 虚拟化:已启用字样 下载Docker Toolbox 下载地址 h ...
- How to attach multiple files in the Send Mail Task in SSIS
Let’s say you need to create a SSIS package that creates 2 files and emails the files to someone. Yo ...
- Scrapy 教程(七)-架构与中间件
Scrapy 使用 Twisted 这个异步框架来处理网络通信,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求. Scrapy 架构 其实之前的教程都有涉及,这里再做个系统介绍 Engin ...