Java驗證碼程式

來源:互聯網
上載者:User

標籤:buffer   font   mouse   def   char   lis   添加   問題   輸出   

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.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
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驗證碼程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.