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 int 包_int readInt()

int readInt()描述 (Description)java.io.ObjectInputStream.readInt()方法读取32位int。声明 (Declaration)以下是java.io.ObjectInputStream.readInt()方法的声明。public int readInt()参数 (Parameters)NA返回值 (Return Value)此方法不返回值。异常 (Exception)EOFExcepti…

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

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

java i18n实例_Java国际化(i18n)格式化日期

本篇文章帮大家学习java国际化(i18n)格式化日期&#xff0c;包含了Java国际化(i18n)格式化日期使用方法、操作技巧、实例演示和注意事项&#xff0c;有一定的学习价值&#xff0c;大家可以用来参考。DateFormat类提供了各种格式来格式化日期。 以下是一些格式的列表。DateForma…

java placeholder_java – 如何在JTextfield中设置像Placeholder一样的文本

我用来覆盖文本字段绘制方法,直到我最终得到更多的自定义文本字段然后我真的想…然后我发现this prompt API易于使用,不需要你扩展任何组件.它还有一个很好的“伙伴”API这已经被包含在SwingLabs,SwingX library中,这使得它甚至可以使用……例如(这使用SwingX-1.6.4)import jav…

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…

jenv java_mac 上使用jenv 管理的多个java 版本

由于服务器是java1.7&#xff0c; mac上是1.8&#xff0c;因此mac编译的java代码会在服务器上报错。因此&#xff0c;需要修改mac上java版本&#xff0c;自己折腾了很久&#xff0c;放弃&#xff0c;决定使用jenv 管理&#xff01; 结果是非常方便使用步骤&#xff1a;1、安装 …

mysql 源码 缓存_MySQL源码:MYSQL存储过程/函数的分析原理及缓存机制

前言&#xff1a;我个人认为&#xff0c;有关MYSQL存储过程/函数在MYSQL中的实现比较粗糙&#xff0c;可扩展性不够好&#xff0c;其实现的耦合性太高&#xff0c;所以主要讲一些它的原理方面的内容&#xff0c;但有可能在某些方面理解不够好或者有些不正确的地方&#xff0c;欢…

如何单元测试Java的private方法

问题 Java类中private方法通常只能被其所属类的调用&#xff0c;其他类只能望而却步&#xff0c;单元测试private方法也就一筹莫展。 尝试解法&#xff1a; 在测试时&#xff0c;手动将private改为public&#xff0c;测试完后再将其改回。将测试方法写进private方法的所属类…

图论与java_算法笔记_150:图论之双连通及桥的应用(Java)

1 问题描述DescriptionIn order to get from one of the F (1 < F < 5,000) grazing fields (which are numbered 1..F) to another field, Bessie and the rest of the herd are forced to cross near the Tree of Rotten Apples. The cows are now tired of often bein…

如何用JUnit单元测试List

问题 JUnit测试List时差强人意。 解法 引入依赖 hamcrest-library包含许多有用方法来测试List数据类型。 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version>&l…

java数据包解析_请教http请求数据包如何解析 重组

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼下面是我捕获到的请求报文片段dst_ip:/121.52.228.134ack:trueack_num:3064957366date:POST /messagebroker/amf HTTP/1.1Host: s16.xxhzw.game.yy.comUser-Agent: Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/…

webqq java_WebQQ登录详解

第二次登录请求方式:POST地址:http://d.web2.qq.com/channel/login2POST正文:r%7B%22status%22%3A%22online%22%2C%22ptwebqq%22%3A%22{0}%22%2C%22passwd_sig%22%3A%22%22%2C%22clientid%22%3A%22{1}%22%2C%22  psessionid%22%3Anull%7D&clientid{2}&psessionidnull…

LeetCode - Easy - 155. Min Stack

Topic StackDesign Description https://leetcode.com/problems/min-stack/ Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. push(x) – Push element x onto stack.pop() – Removes the element on top of the st…

java judgefilecode_VScode出现无法打开“X”: 找不到文件(file:///XXXX) 的解决办法

如标题&#xff0c;被这个问题整了好长时间了&#xff0c;调试的时候如果有语法错误只能显示相应的的行数&#xff0c;没有办法定位到出错的行数上。(由于用处不是很大并且没有找到解决办法&#xff0c;所以就一直放着没管23333)直到最近看到一位大佬的解决办(重写正则表达式)法…

LeetCode - Easy - 169. Majority Element

Topic ArrayDivide and ConquerBit Manipulation Description https://leetcode.com/problems/majority-element/ Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times. You may assume t…

java 静态方法 异常_java空指针异常与静态方法

从一道经典面试题说起&#xff0c;public class HaHa {public static void haha(){System.out.println("haha");}public static void main(String[] args){((HaHa)null).haha();}}打印结果 haha。这段题考查两点知识&#xff0c;java的空指针异常和静态方法。1&#…