以java实现的一个简单登录界面(带验证码)

您所在的位置:网站首页 用户登录验证java 以java实现的一个简单登录界面(带验证码)

以java实现的一个简单登录界面(带验证码)

2024-07-09 15:37| 来源: 网络整理| 查看: 265

本文参考与:https://blog.csdn.net/wyf2017/article/details/78831744

            https://blog.csdn.net/MengKun822/article/details/89302921

一.登录界面

1.程序代码

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 }

 

2.登录界面截图

 

 

 

 

 二.快速注册界面

1.程序代码

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 }

 

2.快速注册界面截图

 

 

 

 

三.验证码部分

1.验证码程序

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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3