java实现用户登录_JAVA实现简单的用户登录客户端

功能要求:

e3993ba912073183d75633b7a9f3d2d8.png

参考文档

实现登录界面和身份校验:

https://blog.csdn.net/hnu1601/article/details/83385558

读取文件:

https://zhidao.baidu.com/question/575023772.html

项目文件格式 模块功能概要

文件格式:

ad7c500b155e50b96e66a9f7cd125e72.png

模块功能概要:

login.java实现登录界面绘制

loginListener:实现txt文件读写、身份校验、校验结果反馈

源程序

login.java

package tests;

import java.awt.Dimension; //封装了一个构件的高度和宽度

import java.awt.FlowLayout;

import java.awt.Font;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JTextField;

import javax.swing.JPasswordField;

import javax.swing.JButton;

public class login {

//在类中定义主函数

public static void main(String[] args) {

// TODO Auto-generated method stub

//在主函数中,实例化Login类的对象,调用初始化界面的方法

login login = new login();

login.initUI();

}

//在类中定义初始化界面的方法

public void initUI() {

//在initUI中实例化JFrame类的对象

JFrame frame = new JFrame();

//设置窗体对象的属性值

frame.setTitle("Login");//设置窗体标题

frame.setSize(400, 250);//设置窗体大小,只对顶层容器生效

frame.setDefaultCloseOperation(3);//设置窗体关闭操作,3表示关闭窗体退出程序

frame.setLocationRelativeTo(null);//设置窗体相对于另一组间的居中位置,参数null表示窗体相对于屏幕的中央位置

frame.setResizable(false);//禁止调整窗体大小

frame.setFont(new Font("宋体",Font.PLAIN,14));//设置字体,显示格式正常,大小

//实例化FlowLayout流式布局类的对象,指定对齐方式为居中对齐组件之间的间隔为10个像素

FlowLayout fl = new FlowLayout(FlowLayout.CENTER,10,10);

//实例化流式布局类的对象

frame.setLayout(fl);

//实例化JLabel标签对象,该对象显示“账号”

JLabel labname = new JLabel("账号:");

labname.setFont(new Font("宋体",Font.PLAIN,14));

//将labname标签添加到窗体上

frame.add(labname);

//实例化JTextField标签对象化

JTextField text_name = new JTextField();

Dimension dim1 = new Dimension(300,30);

text_name.setPreferredSize(dim1);//设置除顶级容器组件以外其他组件的大小

//将textName标签添加到窗体上

frame.add(text_name);

//实例化JLabel标签对象,该对象显示“密码”

JLabel labpass = new JLabel("密码:");

labpass.setFont(new Font("宋体",Font.PLAIN,14));

//将labpass添加到窗体上

frame.add(labpass);

//实例化JPasswordField

JPasswordField text_password = new JPasswordField();

//设置大小

text_password.setPreferredSize(dim1);

//添加到窗体

frame.add(text_password);

//实例化JButton组件

JButton button1 = new JButton();

//设置按键的显示内容

Dimension dim2 = new Dimension(100,30);

button1.setText("登录");

button1.setFont(new Font("宋体",Font.PLAIN,14));

//设置按键大小

button1.setSize(dim2);

frame.add(button1);

frame.setVisible(true);//窗体可见,一定要放在所有组件加入窗体后

loginListener ll = new loginListener(frame,text_name,text_password);

button1.addActionListener(ll);

}

}

loginListener.java

package tests;

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import java.awt.Font;

import javax.swing.JButton;

import javax.swing.JLabel;

import javax.swing.JPanel;

public class loginListener implements ActionListener{

private javax.swing.JTextField text_name;

private javax.swing.JPasswordField text_password;

private javax.swing.JFrame login;

public loginListener(javax.swing.JFrame login,javax.swing.JTextField text_name,javax.swing.JPasswordField text_password)

{//获取登录界面、账号密码输入框对象

this.login=login;

this.text_name=text_name;

this.text_password=text_password;

}

int i=3;//3次登录机会

public void actionPerformed(ActionEvent e)

{

Dimension dim2 = new Dimension(100,30);

Dimension dim3 = new Dimension(300,30);

//生成新界面

javax.swing.JFrame login2 = new javax.swing.JFrame();

login2.setSize(400,200);

login2.setDefaultCloseOperation(3);

login2.setLocationRelativeTo(null);

login2.setFont(new Font("宋体",Font.PLAIN,14)); //宋体,正常风格,14号字体

//创建组件

javax.swing.JPanel jp1 = new JPanel();

javax.swing.JPanel jp2 = new JPanel();

//读取txt文件获取用户名密码

File file = new File("C:用户信息.txt");

BufferedReader br = null;

String usrName = null;

String passWord = null;

try {

br = new BufferedReader(new FileReader(file));

usrName = br.readLine();

passWord = br.readLine();

} catch (FileNotFoundException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}//构造一个BufferedReader类来读取文件

catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

String s = null;

//身份验证并反馈

if(text_name.getText().equals(usrName) && text_password.getText().equals(passWord))

{

JLabel message = new JLabel("登陆成功!");

message.setFont(new Font("宋体",Font.PLAIN,14)); //宋体,正常风格,14号字体

message.setPreferredSize(dim3);

jp1.add(message);

login2.add(jp1,BorderLayout.CENTER);

login2.setResizable(false);

login2.setVisible(true);

//通过我们获取的登录界面对象,用dispose方法关闭它

login.dispose();

}

else if(i>=2)

{

JLabel message = new JLabel("账号或密码错误,您今天还有"+(i-1)+"次机会");

message.setFont(new Font("宋体",Font.PLAIN,14)); //宋体,正常风格,14号字体

message.setPreferredSize(dim3);

//将textName标签添加到窗体上

jp1.add(message);

login2.add(jp1,BorderLayout.CENTER);

JButton close = new JButton("确定");

close.setFont(new Font("宋体",Font.PLAIN,14));

//设置按键大小

close.setSize(dim3);

jp2.add(close);

login2.add(jp2,BorderLayout.SOUTH);

i--;//次数减少

close.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

login2.dispose();

}

});

login2.setResizable(false);

login2.setVisible(true);

}

else if(i == 1)

{

JLabel message = new JLabel("账号已锁定,请明天再试");

message.setFont(new Font("宋体",Font.PLAIN,14)); //宋体,正常风格,14号字体

message.setPreferredSize(dim3);

//将textName标签添加到窗体上

jp1.add(message);

login2.add(jp1,BorderLayout.CENTER);

JButton close = new JButton("确定");

close.setFont(new Font("宋体",Font.PLAIN,14));

//设置按键大小

close.setSize(dim3);

jp2.add(close);

login2.add(jp2,BorderLayout.SOUTH);

close.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

login2.dispose();

}

});

login2.setResizable(false);

login2.setVisible(true);

//通过我们获取的登录界面对象,用dispose方法关闭它

login.dispose();

}

}

}