JAVA语言实现简单登录界面
- 程序设计思想:
使用Math.random()方法循环生成6个97~122之间的随机整数(对应ASCII码值‘a’~‘z’),将其转化为char型变量,连接成为一个6位字符串作为验证码输出,提示用户输入。用户输入字符串与验证码相符则提示通过,不相符则提示错误并再次生成随机验证码。 - 程序流程图:

- 源程序:
import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.Color;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import javax.swing.event.*;
import java.awt.Font;
public class LoginWindow { private JFrame frame;
private JPasswordField passwordField; /**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
LoginWindow window = new LoginWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} /**
* Create the application.
*/
public LoginWindow() {
initialize();
} /**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBackground(Color.BLUE);
frame.setBounds(100, 100, 445, 319);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.CENTER);
panel.setVisible(true);
panel.setLayout(null); JLabel label = new JLabel("\u767B\u5F55\u540D\uFF1A"); //登录名标签
label.setFont(new Font("微软雅黑", Font.PLAIN, 18));
label.setBounds(85, 44, 76, 32);
panel.add(label); JLabel label_1 = new JLabel("\u5BC6\u7801\uFF1A"); //密码标签
label_1.setFont(new Font("微软雅黑", Font.PLAIN, 18));
label_1.setBounds(85, 86, 76, 32);
panel.add(label_1); JLabel label_2 = new JLabel("\u9A8C\u8BC1\u7801\uFF1A"); //验证码标签
label_2.setFont(new Font("微软雅黑", Font.PLAIN, 18));
label_2.setBounds(84, 128, 76, 30);
panel.add(label_2); JTextField textArea = new JTextField(); //用户名文本框
textArea.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255,0,0)));
textArea.setBounds(181, 44, 166, 34);
panel.add(textArea); passwordField = new JPasswordField(); //密码框
passwordField.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255,0,0)));
passwordField.setBounds(181, 86, 166, 34);
panel.add(passwordField); JButton btnNewButton = new JButton("\u767B\u5F55"); //登录按钮
btnNewButton.setEnabled(false);
btnNewButton.setBackground(new Color(51, 153, 0));
btnNewButton.setForeground(Color.BLACK);
btnNewButton.setBounds(124, 186, 181, 29);
panel.add(btnNewButton); JButton btnNewButton_1 = new JButton("\u5FEB\u901F\u6CE8\u518C"); //快速注册按钮
btnNewButton_1.setBackground(new Color(255, 204, 255));
btnNewButton_1.setBounds(124, 225, 181, 29);
panel.add(btnNewButton_1); String result = ""; //验证码字符串
for(int i = 0;i < 6;i++)
{
int c = (int)(Math.random() * 26 + 97); //随机生成6个字符
result = result + (char)c;
}
JLabel lblValid = new JLabel(result);
lblValid.setBounds(277, 134, 70, 22);
panel.add(lblValid); JTextField textArea_1 = new JTextField(); //验证码输入框
textArea_1.getDocument().addDocumentListener(new DocumentListener(){ //添加内容改变事件
public void insertUpdate(DocumentEvent e) {
if(textArea_1.getText().equals(lblValid.getText())){ //在文本框添加数据
btnNewButton.setEnabled(true); //验证码正确,登录按钮可用
}
else{
btnNewButton.setEnabled(false); //验证码错误,登录按钮不可用
}
}
public void removeUpdate(DocumentEvent e) { //从文本框删除数据
if(textArea_1.getText().equals(lblValid.getText())){
btnNewButton.setEnabled(true); //验证码正确,登录按钮可用
}
else{
btnNewButton.setEnabled(false); //验证码错误,登录按钮不可用
}
}
public void changedUpdate(DocumentEvent e) { }
}); textArea_1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255,0,0)));
textArea_1.setBounds(180, 128, 76, 32);
panel.add(textArea_1);
}
} - 实现结果图:

- 实验总结:
- Math.random():产生一个[0,1)之间的随机数。若要产生指定范围[m,n)内随机数,可使用公式
Math.random()*(n+1-m) + m。本程序中为产生[97,122]之间随机整数,先使用Math.random()*(122 + 1 - 97) + 97产生一个[97,123)之间的随机数,再进通过类型转换成为整型数据(只保留整数部分)从而得到97~122之间的整数。 - 通过这次实验,我掌握了Math.random()的用法,了解了Java内类型转换的机制。另外,也初步接触了java的swing组件,熟悉了MyEclipse的设计窗口。
- 在调试过程中,我遇到的主要问题是如何给文本框添加内容改变事件,通过查找资料找到了正确的方法。相信在以后的学习中会有更深体会。
- Math.random():产生一个[0,1)之间的随机数。若要产生指定范围[m,n)内随机数,可使用公式
参考资料:
http://www.yiibai.com/swing/home.html
https://zhidao.baidu.com/question/554112250.html
JAVA语言实现简单登录界面的更多相关文章
- Java语言实现简单FTP软件------>FTP软件主界面的实现(四)
首先看一下该软件的整体代码框架 1.首先介绍程序的主入口FTPMain.java,采用了一个漂亮的外观风格 package com.oyp.ftp; im ...
- Java语言实现简单FTP软件------>源码放送(十三)
Java语言实现简单FTP软件------>FTP协议分析(一) Java语言实现简单FTP软件------>FTP软件效果图预览之下载功能(二) Java语言实现简单FTP软件----- ...
- Java语言实现简单FTP软件------>上传下载管理模块的实现(十一)
1.上传本地文件或文件夹到远程FTP服务器端的功能. 当用户在本地文件列表中选择想要上传的文件后,点击上传按钮,将本机上指定的文件上传到FTP服务器当前展现的目录,下图为上传子模块流程图 选择好要上传 ...
- 以java实现的一个简单登录界面(带验证码)
本文参考于:https://blog.csdn.net/wyf2017/article/details/78831744 https://blog.csdn.net/MengKun822/articl ...
- Java Web实现用户登录界面
一.学习Java Web需要的技术: Java语言基础:算法基础.常用数据结构.编程规范. 掌握常见的数据结构和实用算法:培养良好的编程习惯. Java面向对象:封装.继承.多态等,面向对象程序设计, ...
- Cookie案例:简单登录界面中的应用
ServletDemo1.java package ztq.servlet.study; import java.io.IOException; import java.io.PrintWriter; ...
- 用Java语言实现简单的词法分析器
编译原理中的词法分析算是很重要的一个部分,原理比较简单,不过网上大部分都是用C语言或者C++来编写,笔者近期在学习Java,故用Java语言实现了简单的词法分析器. 要分析的代码段如下: 输出结果如下 ...
- Java语言的简单基础
1.Java 是一种高级程序设计语言. 2.Java 是大小敏感的程序语言. 3.Java 中的 public 修饰的类名一般要与文件名相同,但也有特列:内部类. 4.Java 程序能在任何操作系统中 ...
- 设计简单登录界面(Java web)
程序设计思想: 在Input.jsp中创建一个表格里边分别是课程名称,任课老师,教学地点,并分别用三个文本框来接受输入的三个属性, 并传到另外的Jsp页面中,又来接受三个数据,并判断传来的教师,与教室 ...
随机推荐
- SpringBoot图文教程4—SpringBoot 实现文件上传下载
有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例 ...
- 莫愁前路无知己,天下谁人不识Redis
1. 数据库小知识 1.1 什么是数据库 数据库是"按照数据结构来组织.存储和管理数据的仓库".是一个长期存储在计算机内的.有组织的.有共享的.统一管理的数据集合.数据库是以一定方 ...
- 吴裕雄 python 机器学习——数据预处理标准化MaxAbsScaler模型
from sklearn.preprocessing import MaxAbsScaler #数据预处理标准化MaxAbsScaler模型 def test_MaxAbsScaler(): X=[[ ...
- opencv编译静态库时选择MD模式无效的原因
在Cmake-gui上看到的明明是MD运行库依赖,生成MS项目时却变成了MT运行库依赖. 原因在于编译静态库时内部做了自动替换.
- 仿QQ聊天程序(java)
仿QQ聊天程序 转载:牟尼的专栏 http://blog.csdn.net/u012027907 一.设计内容及要求 1.1综述 A.系统概述 我们要做的就是类似QQ这样的面向企业内部的聊天软件,基本 ...
- Javascript模块化编程之CommonJS,AMD,CMD,UMD模块加载规范详解
JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发? 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问 题进行系 ...
- Go递归函数
package main import "fmt" func main() { /* 递归函数(recursion):一个函数自己调用自己,就叫做递归函数. 递归函数要有一个出口, ...
- yum源文件
yum源文件 2017年11月22日 11:59:36 cakincqm 阅读数 1052更多 分类专栏: Linux 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附 ...
- JDBC--处理Blob
1.LOB(Large Objects)大对象,是用来存储大量的二进制和文本数据的一种数据类型(一个LOB字段可存储多达4GB的数据) --LOB分类两种类型:1)内部LOB: 2)外部LOB: -- ...
- mysql测试点
前言 性能测试过程中,数据库相关指标的监控是不可忽视的,在这里我们就MySQL的监控配置及重点涉及性能的一些参数进行说明. 在笔者的日常性能测试过程中,重点关注了这些参数,但不代表仅仅只有这些参数对性 ...