`
卿黛如画
  • 浏览: 13479 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

简单的登录界面实现(验证码的实现)

 
阅读更多

一、想要实现的登录界面效果



 二、主界面的设置

1、添加三个标签(JLabel):用户名:、密码:、验证码:。

2、添加两个单行文本输入框(JTextField)和一个密码文本输入框(JPasswordField)

3、添加三个按钮:换一张、登录、重置

4、添加验证码:单独创建一个面板类

5、添加按钮监听器(这里不一一赘述)

三、验证码的面板类

1、实现背景图片

       先实例化缓冲图片对象(BufferedImage),再获取其画布对象(gs),再在获取的画布对象(gs)上绘制背景图片(Image)。然后再在本面板的画布对象中,绘制缓冲图片对象。

 public void paint(Graphics g) {
        BufferedImage image = new BufferedImage(WIDTH, HEIGHT,
                BufferedImage.TYPE_INT_RGB);// 实例化BufferedImage
        Graphics gs = image.getGraphics(); // 获取Graphics类的对象
      Image img = null;
        try {
            img = ImageIO.read(new File("img/image1.jpg"));  // 创建图像对象
        } catch (IOException e) {
            e.printStackTrace();
        }
        image.getGraphics().drawImage(img, 0, 0, WIDTH, HEIGHT, null);// 在缓冲图像对象上绘制图像
       g.drawImage(image, 0, 0, null);// 在面板中画出验证码
}

2、实现随机干扰线

          int startX1 = random.nextInt(20);// 随机获取第一条干扰线起点的x坐标
        int startY1 = random.nextInt(20);// 随机获取第一条干扰线起点的y坐标
        int startX2 = random.nextInt(30)+35;// 随机获取第一条干扰线终点的x坐标,也是第二条干扰线起点的x坐标
        int startY2 = random.nextInt(10)+20;// 随机获取第一条干扰线终点的y坐标,也是第二条干扰线起点的y坐标
        int startX3 = random.nextInt(30)+90;// 随机获取第二条干扰线终点的x坐标
        int startY3 = random.nextInt(10)+5;// 随机获取第二条干扰线终点的y坐标
        gs.setColor(Color.RED);
        gs.drawLine(startX1, startY1, startX2, startY2);// 绘制第一条干扰线
        gs.setColor(Color.BLUE);
        gs.drawLine(startX2, startY2, startX3, startY3);// 绘制第二条干扰线

 3、实现随机取得字母

首先实例化随机对象(Random),并可以通过整型到字符型的强制转换实现。

    Random random = new Random();// 实例化Random
    char ctmp = (char) (random.nextInt(26) + 65); // 生成A~Z的字母

 

4、实现字母的随机颜色,旋转和缩放

这里需要用到AffineTransform类。

AffineTransform 类表示 2D 仿射变换,它执行从 2D 坐标到其他 2D 坐标的线性映射,保留了线的“直线性”和“平行性”。可以使用一系列平移 (translation)、缩放 (scale)、翻转 (flip)、旋转 (rotation) 和错切 (shear) 来构造仿射变换。

        // 输出随机的验证文字
        for (int i = 0; i < 4; i++) {
          char ctmp = (char) (random.nextInt(26) + 65); // 生成A~Z的字母
            num += ctmp;// 更新验证码
            Color color = new Color(20 + random.nextInt(120), 20 + random
                    .nextInt(120), 20 + random.nextInt(120));// 生成随机颜色
            gs.setColor(color); // 设置颜色
            Graphics2D gs2d = (Graphics2D) gs;// 将文字旋转指定角度
            AffineTransform trans = new AffineTransform();// 实例化AffineTransform
            trans.rotate(random.nextInt(45) * 3.14 / 180, 22 * i + 8, 7);
            float scaleSize = random.nextFloat() + 0.8f;// 缩放文字
            if (scaleSize > 1f)
                scaleSize = 1f;// 如果scaleSize大于1,则等于1
            trans.scale(scaleSize, scaleSize); // 进行缩放
            gs2d.setTransform(trans);// 设置AffineTransform对象
            gs.drawString(String.valueOf(ctmp), WIDTH / 6 * i + 28, HEIGHT / 2);// 画出验证码
        }

 

  • 大小: 19.3 KB
分享到:
评论

相关推荐

    登陆界面验证码的实现

    jsp 登陆界面验证码的实现

    layui实现登陆界面验证码.docx

    layui 实现登陆界面验证码 layui 是一个流行的前端框架,它提供了很多实用的功能和组件,其中包括实现登陆界面验证码的功能。...通过使用 layui 的表单组件和 canvas 元素,我们可以轻松地实现验证码的生成和验证。

    登陆验证码的c#代码

    该代码可以帮助开发者快速实现验证码功能,以提高网络应用程序的安全性。 知识点: 1. 如何使用 C# 生成登陆验证码代码 2. 验证码的实现机制 3. 如何使用随机数生成器生成验证码字符串 4. 如何使用 Graphics 对象...

    实现验证码功能的登陆界面.rar

    本项目“实现验证码功能的登陆界面”是基于Java技术,利用Servlet实现的一个简单的验证码登录界面,旨在帮助学习者理解验证码的工作原理和实现方法。 验证码的主要目的是增加一个验证步骤,确保用户是真实的、有...

    Android studio 学习2:实现密码登录界面和验证码登录界面的切换(在同一xml页面)

    Android studio :实现密码登录界面和验证码登录界面的切换(不用新建xml页面) 一、了解Xml设置隐藏属性 android:visibility=” “ Visible:正常显示 Invisible:保留位置 Gone:完全隐藏 二、实现图示 Java...

    动态生成登陆界面验证码

    在这个Java实现的案例中,我们探讨的是如何动态生成登录界面的验证码。 动态验证码的核心在于它的随机性和一次性。每次用户请求时,服务器会生成一个新的、独特的验证码图像,这样即使攻击者截取了这次的验证码,也...

    ASP.net 带验证码的极其漂亮美观多项目可通用登陆界面。

    在ASP.NET中实现验证码通常涉及到以下步骤: 1. **创建验证控件**:ASP.NET 提供了`Validator`类,我们可以创建一个`CustomValidator`控件来处理自定义的验证逻辑,如生成和验证验证码。 2. **生成验证码**:在...

    VB中生成登陆验证码

    在VB中,可以使用以下步骤实现验证码功能: - 导入必要的命名空间:`Imports System.Drawing` - 创建随机数生成器和图像对象 - 生成验证码字符串 - 创建画笔和字体对象 - 绘制验证码和干扰元素 - 将图像保存...

    JSP带验证码的登陆界面

    在JSP中实现验证码,我们需要以下几个关键步骤: 1. **生成验证码**:首先,服务器端(通常是Java后台)需要生成一个随机字符串或数字序列,将其存储在session中,同时将该字符串以图像的形式展示在页面上。这通常...

    asp.net实现登陆界面

    在这个“asp.net实现登陆界面”的项目中,我们将深入探讨如何在MVC框架下实现一个登录界面,包括数据库连接、动态样式和验证码功能。 首先,让我们关注ASP.NET MVC的核心组件。模型(Model)负责处理业务逻辑和数据...

    Vue 实现登录界面验证码功能

    整个实现过程的代码简单易懂,对于希望了解如何在Vue中实现验证码功能的开发者来说,这是一篇很有参考价值的文章。通过阅读本文档的内容,开发者可以学习到如何利用Vue的组件系统和canvas API来完成一个具体的前端...

    PHP实例教程-网页登陆验证码的实现

    这个简单的PHP验证码实现结合了图像处理和会话管理,提供了一种有效的安全措施。但请注意,对于更高级的攻击,你可能需要考虑更复杂的验证码解决方案,如谷歌的reCAPTCHA或其他第三方服务。总的来说,理解并掌握如何...

    JavaScript实现页面动态验证码

    以下是一个简单的JavaScript验证码实现示例: ```javascript document.addEventListener('DOMContentLoaded', function() { var canvas = document.getElementById('captcha'); var ctx = canvas.getContext('2d'...

    登陆页面随机验证码

    验证码的实现技术通常涉及到以下几个方面: 1. **随机数生成**:验证码的每个字符都是基于随机数生成的,确保每次生成的验证码都独一无二。这个过程可能涉及到加密算法,确保生成的随机性足够强。 2. **图像处理**...

    漂亮登陆界面+Struts2 验证码 完整实现

    开发环境: eclipse Kepler JEE IDE + Tomcat v6.0 + Struts-2.3.15(最新版) 步骤: 1. 下载后解压,import to eclipse as a project. 2. 启动 Tomcat v6.0 3. 打开... 不能用,找我!

    unity c#手机短信验证码登陆注册

    发送的验证码内容代码,已写好,直接添加按钮调用即可,无需营业执照,个人可用,无需任何资质,轻松实现短信验证码功能,无需理解底层原理,全部封装好,直接调用即可,已写中文注释,使用c#代码编写,可在任何支持...

    EXT登陆验证码

    EXT可能是EXTension的缩写,暗示这可能是一个特定的技术扩展或插件,用于实现这种验证码功能。 EXT验证码的工作原理通常涉及以下几个步骤: 1. **生成验证码**:当用户尝试登录时,服务器会随机生成一个唯一的、有...

    extjs 登陆页面+验证码

    同时,还需要一个图片展示验证码图像,这可以通过动态生成并返回图像的服务器端脚本来实现,客户端则使用`Ext.image`组件来显示。 为了增加用户体验,可以添加一个进度条,比如在用户点击登录后显示,表示后台正在...

    登陆系统 页面 随机数验证码

    实现了登录系统的验证码、密码错误、用户名错误等提示信息

    Android登陆注册界面(使用手机号码验证码进行登陆注册)

    通常,我们会使用XML布局文件在`app/src/main/res/layout`目录下定义界面元素,如EditText(输入手机号和验证码)、Button(获取验证码、注册、登录)等。同时,我们可以利用Android的Material Design库来提供美观的...

Global site tag (gtag.js) - Google Analytics