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验证码程序的更多相关文章

  1. java制作验证码(java验证码小程序)

    手动制作java的验证码 Web应用验证码的组成: (1)输入框 (2)显示验证码的图片 验证码的制作流程: 生成验证码的容器使用 j2ee的servlet 生成图片需要的类: (1) Buffere ...

  2. springMVC+Java验证码完善注册功能

    这篇文章简单的写了一个java验证码,为之前写过的springMVC注册功能加上验证码,验证码的作用就不多说了,防止机器人程序恶意注册什么的.. 其中User.java,加上了password和cod ...

  3. 验证码程序Demo

    小伙伴都有这样的经历,册各种网站,总是输不对验证码,双十一那天狂买的小伙伴是不是对输入验证码有着不一样的感触呢,以前觉得验证码真是个麻烦鬼,一个不小心,一个眼拙,哎呦,没有输入正确,又是一阵子大眼瞪小 ...

  4. Java基础-输入输出-3.编写BinIoDemo.java的Java应用程序,程序完成的功能是:完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc。

    3.编写BinIoDemo.java的Java应用程序,程序完成的功能是:完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc. try { FileInputStream in = ...

  5. 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 ...

  6. JAVA基础-输入输出:1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。

    1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上. package Test03; ...

  7. 《java小应用程序(Applet)和java应用程序(Application)分别编写的简单计算器》

    Application和Java Applet的区别.Java语言是一种半编译半解释的语言.Java的用户程序分为两类:Java Application和Java Applet.这两类程序在组成结构和 ...

  8. 《Java应用程序(Application)》

    在编写Java应用程序(Application)时可以这样: 1,定义包名. 2, 导入相关的包. 3, 定义一个类. 4,定义相关变量. 5,定义构造函数.(在构造函数内调用init()方法和add ...

  9. Java 验证码、二维码

    Java 验证码.二维码 资源 需要:   jelly-core-1.7.0.GA.jar网站:   http://lychie.github.io/products.html将下载下来的 jelly ...

随机推荐

  1. 旋转数组 空间复杂度为O(1) 的2 种方法 + 1种空间复杂度O(n)

    题目地址 : 旋转数组. 网上好多不是根本就是错的,就是空间复杂度不是真正为1 下面总结一下 方法1 普通方法(空间复杂度不满足要求,但是题目并不会判错,说明他们没用对空间进行校验) ··· publ ...

  2. 使用Callable或DeferredResult实现springmvc的异步请求

    使用Callable实现springmvc的异步请求 如果一个请求中的某些操作耗时很长,会一直占用线程.这样的请求多了,可能造成线程池被占满,新请求无法执行的情况.这时,可以考虑使用异步请求,即主线程 ...

  3. LoadRunner11安装及破解

    一.LoadRunner11安装 以管理员身份运行setup.exe 选择第一个LoadRunner完整安装程序 按照界面会弹出以上提示框,直接选择否 检查系统缺少哪些组件,点击“确定”自动安装 点击 ...

  4. 细说python类3——类的创建过程

    细说python类3——类的创建过程 https://blog.csdn.net/u010576100/article/details/50595143 2016年01月27日 18:37:24 u0 ...

  5. MySQL学习-基础练习题

    day1 学生表操作: 1. 查询出班级205有多少个男生 2. 查询出名字为4个字的所有学生信息(编号.姓名,年龄,班级) 3. 查询出所有姓王的学生信息(编号.姓名,年龄,班级) 4. 查询出班级 ...

  6. ARP协议基础

    ARP 什么是ARP协议 ARP协议是能够根据IP地址解析出该IP地址所在设备的MAC地址,叫(Address Resolution Protocol)地址解析协议 ARP地址的工作流程 当一台主机A ...

  7. java 接入微信 spring boot 接入微信

    1.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...

  8. Maven 项目中的groupId和artifactId

    maven进行项目管理,如果我们要将项目加入到maven到本地仓库中,则需要对项目进行唯一性标示,而groupId和artifactId就起到这样对作用. groupId为项目组织对唯一标识符,可以理 ...

  9. 【JZOJ 3909】Idiot 的乘幂

    题面: 正文: 把题目中的方程组组合在一起就变成了: \(X^{a+c}\equiv b \cdot d (\mod p)\) 那这时,我们假定两个数\(x\)和\(y\),使得: \(ax + cy ...

  10. Scrapy 教程(九)-日志系统

    最新版本的 scrapy 已经废弃了 scrapy.log 的使用,赞成显示调用python标准日志记录. Python 内建日志系统 import logging ### python 内建 log ...