国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java繪制驗證碼。

2019-11-06 07:35:07
字體:
來源:轉載
供稿:網友

溫馨提示:

                 代碼中的注釋值得參考。

/**

 * @author ausu:java繪制驗證碼。 *  */package indentiy;import java.awt.Frame;import java.awt.Panel;import java.awt.Window;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class DrawingIndentfiy {    public static void main(String[] args) {        // TODO Auto-generated method stub        /**         * 使用java中的類中的方法(即抽象畫筆)來繪制驗證碼。         * 1.創建一個Frame窗體         * 2.窗體中包含一個容器。         * 3.在容器里邊繪制驗證碼,即隨機產生數字或字符。         */         final Frame frame = new Frame("驗證碼");//創建Frame對象         final Panel panel = new MyPanel();         frame.add(panel);         frame.setSize(300, 300);         frame.setLocationRelativeTo(null);//將Frame窗口居中         frame.setVisible(true);                  //為Frame添加(addWindowListener)一個監聽對象(WindowAdapter).         frame.addWindowListener(new WindowAdapter() {             public void windowClosing(WindowEvent e){                 Window window = e.getWindow();                 window.setVisible(false);             }        });    }}package indentiy;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Panel;import java.util.Random;public class MyPanel extends Panel{    /**       *1.重寫Panel組件中的paint()方法。       *  注:       *   因為,在組件第一次顯示時,AWT線程都會自動去調用組件的paint(Graphics g)方法。       *該方法傳入一個Graphics類型的對象用于繪制圖形。Graphics為抽象類。    *   使用:Graohics類——繪圖類,其對象為抽象的畫筆。    */    public void paint(Graphics g){        int width = 160;//定義驗證碼圖片的寬度        int height = 40;//定義驗證碼的高度                g.setColor(Color.LIGHT_GRAY);//設置上下文顏色        g.fillRect(0,0, width, height);//填充驗證碼背景        g.setColor(Color.BLACK);//設置上下文顏色        g.drawRect(0,0, width -1, height -1);//繪制邊框            /**     * 2.繪制干擾點。     * 使用:Random類中的方法。     */        Random r =new Random();        for (int i = 0; i < 100; i++) {            int x= r.nextInt(width)-2;//nextInt(width);此方法返回0-width之間的隨機整數。因為,橢圓或圓的width=2,所以x軸需要減去2.            int y= r.nextInt(height)-2;            g.drawOval(x, y, 2, 2);//繪制一個橢圓或圓,剛好能夠放入x,y,width,height參數指定的矩形中。x,y為橢圓或圓的坐標,width,height為橢圓或圓的寬高。        }            /**     * 3.產生隨機數或字符    .     * 使用:Random類及StringBuilder類中的方法。     */        g.setFont(new Font("黑體",Font.BOLD,30));//設置驗證碼字體        g.setColor(Color.BLACK);//設置驗證碼顏色        //產生隨機驗證碼        //創建一個Char數組,toCharArray()方法是:將將此字符串轉換為一個新的字符數組。        char[] chars = ("0123456789abcdefghijkmnopqrstuvwxyzABCDEFG"+"HIJKHMNOPQRSTUVWXYZ").toCharArray();                StringBuilder sb = new StringBuilder();//有效地將給定的數據轉換成字符串,然后將該字符串的字符追加或插入到字符串緩沖區中。        for (int i = 0; i < 4; i++) {            int pos = r.nextInt(chars.length);//隨機獲取Char數組中的下標數。            char c= chars[pos];//通過數組下標獲取,對應的字符。            sb.append(c+" ");//append 方法:始終將這些字符添加到緩沖區的末端。        }                g.drawString(sb.toString(), 20, 30);//toString 方法:返回此序列中數據的字符串表示形式。最左側字符左下角位于(20,30)坐標。    }}/** * 總結: *    *步驟: *        1.先創建一個Frame。 *        2.再創建一個容器Panel。 *        3.將Panel添加至Frame中。 *        4.使用:Random類中的方法,產生隨機整數,用于drawOval(x, y, width, height);繪制干擾點的x,y軸。 *        5.創建一個字符數組來存放數字和字符,再使用StringBuilder類中的nextInt(int n);方法來隨機獲取字符數組的下標。 *        6.使用字符生成器(StringBuilder)中的append(char n);方法來獲取字符c,并將其添加至緩沖區末端。 *        7.使用字符生成器(StringBuilder)中的toString();方法將緩沖區末端的字符以字符串的形式返回。 *        8.使用繪圖類(Graphics)的drawString(String str, int x,int y);方法在(x,y)坐標上顯示str字符串。

 */

注:此博文為日常學習總結,不當之處,多多指教。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江永县| 柯坪县| 宁武县| 黑龙江省| 辰溪县| 临泽县| 荆门市| 筠连县| 浙江省| 巴彦淖尔市| 饶平县| 鄂州市| 怀仁县| 凉山| 葵青区| 漠河县| 保山市| 九江市| 攀枝花市| 得荣县| 夏河县| 双柏县| 平泉县| 黄陵县| 商水县| 剑河县| 海兴县| 昌宁县| 于田县| 深水埗区| 南木林县| 桂阳县| 黄陵县| 昆明市| 绥宁县| 高台县| 白沙| 仙桃市| 尖扎县| 伽师县| 方城县|