java图形用户登录界面_Java简单登录图形界面

一.登录界面

1.程序代码

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 import java.awt.*;//导入awt包

2 import javax.swing.*;//导入swing包

3 import java.awt.event.ActionListener;//导入awt包中的监听器事件包

4 import java.awt.event.ActionEvent;//导入awt包中的ActionEvent事件包

5

6 public class EnterScreen extends JFrame {

7 static int s=0;

8 public EnterScreen() {

9 Yanzhencode vcode = new Yanzhencode();

10 setSize(300,290);//设计窗体的大小

11 setTitle("请登录");

12 setBackground(Color.RED);//设置背景颜色

13 JLabel a=new JLabel("登录名"); //实例化JLabel对象

14 JLabel b=new JLabel("密 码");

15 JLabel g=new JLabel("忘记用户名/密码?");

16 JLabel h=new JLabel("验证码");

17 g.setForeground(Color.BLUE);

18 JTextField c=new JTextField(15);//实例化用户名文本框

19 JPasswordField d=new JPasswordField(15);//实例化密码框

20 JTextField k=new JTextField(4);//实例化验证码框

21 d.setEchoChar('*');//将输入密码框中的密码以*显示出来

22 JButton e=new JButton("登录");

23 JButton f=new JButton("快速注册");

24 e.setBackground(Color.YELLOW);//设置登录按钮字体颜色

25 f.setForeground(Color.GRAY);//设置快速登录按钮填充色

26 setVisible(true);//使窗体可视化

27 Container m=getContentPane();//获取一个容器

28 getContentPane().setBackground(Color.WHITE);//设置窗体填充色

29 // 将用户名、密码的Jlabel和用户名JTextField文本框、密码JPasswordField密码框以及确定JButton、快速注册JButton添加到container容器里面 //

30 m.add(a);

31 m.add(b);

32 m.add(c);

33 m.add(d);

34 m.add(e);

35 m.add(f);

36 m.add(g);

37 m.add(h);

38 m.add(k);

39 m.add(vcode);

40 setBounds(300,300,300,300);//设置窗体的长宽各为300、300 让其显示在左上方的300、300处

41 m.setLayout(null);

42 // a、b、c、d、e、f显示在container容器中的位置坐标

43 a.setBounds(10,40,50,18);

44 b.setBounds(10,80,50,18);

45 c.setBounds(60,40,130,18);

46 d.setBounds(60,80,130,18);

47 h.setBounds(10,120,50,18);

48 k.setBounds(60,120,80,18);

49 e.setBounds(90,180,100,30);

50 f.setBounds(90,220,100,30);

51 g.setBounds(190,75,100,30);

52 vcode.setBounds(140,110,80,30);

53 e.addActionListener(new ActionListener() {//对登录按钮添加监听事件

54

55 @SuppressWarnings("deprecation")

56 @Override

57 public void actionPerformed(ActionEvent arg0) {

58 // TODO Auto-generated method stub

59

60 if(c.getText().trim().equals("xiaoyang")&&new String(d.getPassword()).equals("123456")&&s==1) {//equals函数进行用户名和密码的匹配

61 JOptionPane.showMessageDialog(null,"登录成功");

62

63 new NewFrame();//进入到NewFrame这个窗体中

64 }else if(c.getText().trim().equals("xiaoyang")&&new String(d.getPassword()).equals("123456")&&s==0) {

65 JOptionPane.showMessageDialog(null,"验证码输入错误");

66 }else {

67 JOptionPane.showMessageDialog(null, "登录失败,用户名、密码或验证码输入错误");

68 }

69 }

70

71 });

72 f.addActionListener(new ActionListener(){//对快速注册按钮添加监听事件

73 @SuppressWarnings("deprecation")

74 @Override

75 public void actionPerformed(ActionEvent arg0) {

76 // TODO Auto-generated method stub

77 new zhuce();//进入都到zhuce窗体中

78 }

79

80 });

81 //判断输入验证码是否正确

82 if(k.getText()== null) {

83 s=0;

84 }else if(vcode.getCode() == null) {

85 s=1;

86 }else if(vcode.getCode() .equals(k.getText())) {

87 s=1;

88 }else {

89 s=0;

90 }

91 }

92

93 public static void main(String[] args) {

94 new EnterScreen();

95

96 }

97

98 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

2.登录界面截图

25e332bbfad2916c188f79d8b276fb84.png

2c91a7412b067c9c2fc99c30dd5594eb.png

二.快速注册界面

1.程序代码

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 import java.awt.*;

2 import javax.swing.*;

3 import java.awt.event.ActionListener;

4 import java.awt.event.ActionEvent;

5 import java.sql.*;

6 import java.awt.Container;

7

8 import javax.swing.JButton;

9 import javax.swing.JLabel;

10 import javax.swing.JPasswordField;

11 import javax.swing.JTextField;

12

13 public class zhuce extends JFrame {

14 public zhuce() {

15 setSize(300,250);//设计窗体的大小

16 JLabel a=new JLabel("用户名"); //实例化JLabel对象

17 JLabel b=new JLabel("密 码");

18 JLabel h=new JLabel("再次确认密码");

19 JTextField c=new JTextField(15);//实例化用户名文本框

20 JPasswordField d=new JPasswordField(15);//实例化密码文本框

21 JPasswordField hd=new JPasswordField(15);//实例化密码文本框

22 d.setEchoChar('*');//设置密码隐藏制度

23 JButton e=new JButton("确定");

24 JButton f=new JButton("重置");

25 JButton g=new JButton("返回");

26 setVisible(true);

27 //获取一个容器

28 Container m=getContentPane();

29 // 将用户名、密码的Jlabel和用户名JTextField文本框、密码JPasswordField密码框以及确定JButton、快速注册JButton添加到container容器里面

30 m.add(a);

31 m.add(b);

32 m.add(h);

33 m.add(hd);

34 m.add(c);

35 m.add(d);

36 m.add(e);

37 m.add(f);

38 m.add(g);

39 //设置窗体的长宽各为300、250 让其显示在左上方的300、250处

40 setBounds(300,250,300,250);

41 m.setLayout(null);

42 // a、b、c、d、e、f显示在container容器中的位置坐标

43 a.setBounds(10,40,50,18);

44 b.setBounds(10,80,50,18);

45 h.setBounds(5,120,80,18);

46 c.setBounds(60,40,200,18);

47 d.setBounds(60,80,200,18);

48 hd.setBounds(90,120,180,18);

49 e.setBounds(110,160,60,30);

50 f.setBounds(30,160,60,30);

51 g.setBounds(190,160,60,30);

52 g.addActionListener(new ActionListener() {//对返回按钮添加监听事件

53 @SuppressWarnings("deprecation")

54 @Override

55 public void actionPerformed(ActionEvent arg0) {

56 // TODO Auto-generated method stub

57 new EnterScreen();

58

59 }

60 });

61 f.addActionListener(new ActionListener() {//对确认按钮添加监听事件

62 @SuppressWarnings("deprecation")

63 @Override

64 public void actionPerformed(ActionEvent arg0) {

65 // TODO Auto-generated method stub

66 new EnterScreen();

67

68 }

69 });

70 e.addActionListener(new ActionListener() {//对确认按钮添加监听事件

71 @SuppressWarnings("deprecation")

72 @Override

73 public void actionPerformed(ActionEvent arg0) {

74 // TODO Auto-generated method stub

75 new zhuce();

76

77 }

78 });

79 }

80 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

2.快速注册界面截图

7bd68c996bd5d5b1a0e28e3f858048ff.png

三.验证码部分

1.验证码程序

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 import java.awt.Color;

2 import java.awt.Dimension;

3 import java.awt.Font;

4 import java.awt.FontMetrics;

5 import java.awt.Graphics;

6 import java.awt.Graphics2D;

7 import java.awt.event.MouseEvent;

8 import java.awt.event.MouseListener;

9

10 import java.util.Random;

11

12 import javax.swing.JComponent;

13

14 public class Yanzhencode extends JComponent implements MouseListener {

15

16 private String codes; //自动生成的验证码

17

18 private int width, height = 40; //设置验证码高度、宽度

19

20 private int codesLength = 4; //设置代码长度

21

22 private Random random = new Random(); //生成数字的方法

23

24 public Yanzhencode() {

25 width = this.codesLength * 16 + (this.codesLength - 1) * 10; //根据验证码长度设置宽度

26 setPreferredSize(new Dimension(width, height)); //设置背景大小

27 setSize(width, height); //设置验证码长度和宽度

28 this.addMouseListener(this);

29 setToolTipText("点击可更换验证码");

30 }

31 //得到生成的验证码

32 public int getCodesLength() {

33 return codesLength;

34 }

35

36

37 //设置验证码的长度

38 public void setCodesLength(int codeLength) {

39 if(codesLength < 4) {

40 this.codesLength = 4;

41 } else {

42 this.codesLength = codeLength;

43 }

44

45 }

46

47 public String getCode() {

48 return codes;

49 }

50

51

52 //让验证码产生随机的颜色

53 public Color getRandColor(int min, int max) {

54

55 if (min > 255)

56 min = 255;

57 if (max > 255)

58 max = 255;

59 int red = random.nextInt(max - min) + min;

60 int green = random.nextInt(max - min) + min;

61 int blue = random.nextInt(max - min) + min;

62 return new Color(red, green, blue);

63 }

64 // 设置验证码具体的数字或字母是什么

65 protected String generateCode() {

66 char[] codes = new char[this.codesLength];

67 for (int i = 0, len = codes.length; i < len; i++) {

68 if (random.nextBoolean()) {

69 codes[i] = (char) (random.nextInt(10) + 48);

70 } else {

71 codes[i] = (char) (random.nextInt(26) + 97);

72 }

73 }

74 this.codes = new String(codes);

75 return this.codes;

76 }

77

78

79 @Override

80 protected void paintComponent(Graphics g) {

81 super.paintComponent(g);

82 if(this.codes == null || this.codes.length() != this.codesLength) { //判断生成的验证码是否为空或超出长度

83 this.codes = generateCode();

84 }

85 width = this.codesLength * 16 + (this.codesLength - 1) * 10;

86 super.setSize(width, height); //接口使用,验证码字体大小

87 super.setPreferredSize(new Dimension(width, height));//接口使用,验证码背景大小

88 Font mFont = new Font("Arial", Font.BOLD | Font.ITALIC, 25); //设置字体和字体大小

89 g.setFont(mFont); //设置对象

90 //绘制出验证码的背景的矩形轮廓

91 Graphics2D g2d = (Graphics2D) g;

92 g2d.setColor(getRandColor(200, 250));

93 g2d.fillRect(0, 0, width, height);

94 g2d.setColor(getRandColor(180, 200));

95 g2d.drawRect(0, 0, width - 1, height - 1);

96 //绘制出验证码背景的线

97 int i = 0, len = 150;

98 for (; i < len; i++) {

99 int x = random.nextInt(width - 1);

100 int y = random.nextInt(height - 1);

101 int x1 = random.nextInt(width - 10) + 10;

102 int y1 = random.nextInt(height - 4) + 4;

103 g2d.setColor(getRandColor(180, 200));

104 g2d.drawLine(x, y, x1, y1);

105 }

106

107

108

109 //绘制出验证码的具体字母

110 i = 0; len = this.codesLength;

111 FontMetrics fm = g2d.getFontMetrics();

112 int base = (height - fm.getHeight())/2 + fm.getAscent();

113 for(;i

114 int b = random.nextBoolean() ? 1 : -1;

115 g2d.rotate(random.nextInt(10)*0.01*b);

116 g2d.setColor(getRandColor(20, 130));

117 g2d.drawString(codes.charAt(i)+"", 16 * i + 10, base);

118 }

119 }

120

121 //下一个验证码

122 public void nextCode() {

123 generateCode();

124 repaint();

125 }

126

127 @Override

128 public void mouseClicked(MouseEvent e) {

129

130 nextCode();

131 }

132

133 @Override

134 public void mousePressed(MouseEvent e) {

135 // TODO Auto-generated method stub

136

137 }

138

139 @Override

140 public void mouseReleased(MouseEvent e) {

141 // TODO Auto-generated method stub

142

143 }

144

145 @Override

146 public void mouseEntered(MouseEvent e) {

147 // TODO Auto-generated method stub

148

149 }

150

151 @Override

152 public void mouseExited(MouseEvent e) {

153 // TODO Auto-generated method stub

154

155 }

156 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

2.验证码实现效果

51e56c6a91da9592a4db0b1aaedceee5.png

点击验证码图片后,验证码会更换

1ecf39095e55cdcfb80abc9561c3c891.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

北大青鸟java y2_Struts-2 北大青鸟 Y2学年 项目案例使用 2框架开发租房网站 Java Develop 249万源代码下载- www.pudn.com...

文件名称: Struts-2下载 收藏√ [5 4 3 2 1 ]开发工具: Java文件大小: 10225 KB上传时间: 2016-01-03下载次数: 0提 供 者: 姜鹏详细说明&#xff1a;北大青鸟 Y2学年 项目案例使用Struts 2框架开发租房网站-My English LOW文件列表(点击判断是否您需要的文件&#xff0c…

java i o是什么流_Java I/O流的总结

I/O的类结构图I/O的分类根据处理的数据类型分为&#xff1a;字节流和字符流。根据数据流向分为&#xff1a;输入流和输出流。流又可分为节点流和处理流。节点流直接与数据源相连处理流与节点流一起使用&#xff0c;在节点流的基础上&#xff0c;再嵌套一层。提高文件的读取效率…

java web聊天室私聊map_java websocket聊天室示例(springboot)

【实例简介】【实例截图】【核心代码】package com.example.demo;import java.io.IOException;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.ConcurrentHashMap;import javax.websocket.OnClose;import …

Java 内存映射读取文件_Java内存映射 大文件轻松处理|chu

前言内存映射文件(Memory-mapped File)&#xff0c;指的是将一段虚拟内存逐字节映射于一个文件&#xff0c;使得应用程序处理文件如同访问主内存(但在真正使用到这些数据前却不会消耗物理内存&#xff0c;也不会有读写磁盘的操作)&#xff0c;这要比直接文件读写快几个数量级。…

LeetCode - Easy - 118. Pascal‘s Triangle

Topic Array Description https://leetcode.com/problems/pascals-triangle/ Given a non-negative integer numRows, generate the first numRows of Pascal’s triangle. In Pascal’s triangle, each number is the sum of the two numbers directly above it. Example…

LeetCode - Easy - 119. Pascal‘s Triangle II

Topic Array Description https://leetcode.com/problems/pascals-triangle-ii/ Given an integer rowIndex, return the rowIndexth row of the Pascal’s triangle. Notice that the row index starts from 0. In Pascal’s triangle, each number is the sum of the tw…

java原始模型模式_java设计模式--原始模型模式

简介原始模型模式属于对象的创建模式。通过一个原型对象来指明要创建对象的类型&#xff0c;然后用复制原型对象的方法来创建出更多同类型的对象。Java所有的类都是从java.lang.Object类继承来的&#xff0c;Object类提供clone()方法对对象进行复制。一般调用clone()方法需要满…

java并行计算同步返回_Java大文本并行计算实现过程解析

Java大文本并行计算实现过程解析简单提高文本读取效率&#xff0c;使用BufferedReader是个不错的选择。速度最快的方法是MappedByteBuffer&#xff0c;但是&#xff0c;相比BufferedReader而言&#xff0c;效果不是非常明显。也就是说&#xff0c;后者虽然快&#xff0c;但也快…

java mvc 菜鸟_【java框架】SpringMVC(1)--SpringMVC入门

1.SpringMVC框架认识Spring MVC是一个基于MVC模式的Web框架&#xff0c;SpringMVC作为Spring中的一个模块&#xff0c;它与Spring能够无缝集成&#xff0c;主要用于解决企业Web开发中常见的问题&#xff1a;如参数接收、文件上传、表单验证、国际化等等。2.SpringMVC HelloWorl…

php设置cookie 域名,php如何设置cookie对整个域名有效?

php设置cookie对整个域名有效的方法&#xff1a;由setcookie函数让cookie对整个域名有效&#xff0c;代码为【setcookie("cookie_test", this is cookie test, time()3600,"/",“】。php设置cookie对整个域名有效的方法&#xff1a;默认情况下的cookie仅对…

我的世界一个程序导致JAVA,Java地位无可动摇的12个原因

如今&#xff0c;面对曾经在程序员中被各种新技术掩盖直至堙灭的技术值得怀念。犹如COBOL这当年被老程序员们尊为神器的语言如今也基本没有价值。而Java作为现代程序员的中坚力量在这点上或许会成为下一个COBOL。有关JAVA的技术卖出多少本书已经是一个很久远的记忆了。现处中年…

mysql 5.5.23 winx64,win10下mysql 5.7.23 winx64安装配置方法图文教程

本文记录了mysql 5.7.23 winx64安装教程&#xff0c;具体内容如下Step1选择手动下载版本解压到自己指定的路径上图中的my.ini及data文件夹在压缩包里是没有的&#xff0c;后面需要自己添加my.ini如下&#xff0c;直接copy~然后在目录下创建一个data文件夹Step2设置环境变量电脑…

matlab生成均匀部分散点图,应用halton序列生成均匀散点图

前言一门课的作业要用RBF-DQ方法计算流场。简单来讲就是要在无网格的条件下用高精度格式实现流场的仿真计算。生成散点图时&#xff0c;用蒙特卡洛的方法得到的散点图分布不是很均匀&#xff0c;于是想到一种叫做halton的序列。本篇将运用halton序列生成均匀的散点图。halton序…

解决动态规划问题4步曲

概述 &#xff08;确定状态&#xff09;确定问题状态 提炼最后一步子问题转化 &#xff08;求得方程&#xff09;转移方程&#xff0c;把问题方程化&#xff08;设初置界&#xff09;按照实际逻辑设置初始条件和边界情况&#xff08;确序再解&#xff09;确定计算顺序并求解 …

查看oracle监听服务器,处理Oracle 监听文件listener.log问题

如果连接时候变得较慢 查看Oracle日志记录&#xff0c;可能是因为此文件太大&#xff0c;超过2G&#xff0c;需要定期清理&#xff0c;(如果多用户&#xff0c;记得用root&#xff0c;可能没权限)查看listener.log&#xff1f;find / -name listener.log经查看&#xff0c;竟然…

美国oracle球场,美国体育馆考察——美国体育产业是如何盈利的?

体育是美国一项较高利润的产业&#xff0c;其发展规模、发展水平和效益都是世界一流的。美国体育馆考察&#xff0c;主要考察美国体育产业的盈利模式和体育赛事的赞助模式以及球馆的运营管理&#xff0c;并对比中美体育产业的差异&#xff0c;从中获得先进的体育产业运营思维&a…

php集成环境怎么打开,PHP集成开发环境PhpStorm快速入门指南(二):打开一个项目...

PhpStorm是一个轻量级且便捷的PHP IDE&#xff0c;其旨在提高用户效率&#xff0c;可深刻理解用户的编码&#xff0c;提供智能代码补全&#xff0c;快速导航以及即时错误检查。可随时帮助用户对其编码进行调整&#xff0c;运行单元测试或者提供可视化debug功能。PhpStorm 2019.…

计算机分php,计算机按照处理数据的形态分类,可以分为什么?

计算机按照处理数据的形态分类&#xff0c;可以分为&#xff1a;1、数字计算机&#xff0c;是以数字形式的量值在机器内部进行运算和存储的电子计算机&#xff1b;2、模拟计算机&#xff0c;是根据相似原理&#xff0c;用一种连续变化的模拟量作为被运算的对象的计算机&#xf…

2.oracle物理结构,oracle实验2oracle物理结构管理

oracle实验2oracle物理结构管理 (6页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;9.9 积分实验2 oracle物理存储结构管理、实验目的1. 掌握物理结构的创建和修改方法2. 掌握表空间的存储参数设置方…

linux mount 查看挂载目录,Linux下使用mount来挂载设备到目录

一般情况下直接mount 设备路径 目录路径&#xff0c;就可以了。umount 设备名&#xff0c;就可以卸载这个设备了使用lsblk -f可以查看挂载的设备&#xff0c;以及这些设备的文件系统。roottao-PC:/boot# lsblk -fNAME FSTYPE LABEL UUID MOUNTPOINTsda├─sda1├─sda2 vfat SY…