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();

}

}

}

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Text extends JFrame implements ActionListener,TextListener { private JLabel username,password,email,telephone; private JTextField usernameField,emailField; private TextField teleField; private JPasswordField passwordField; private JButton registButton,cancelButton; public Text() { super("用户注册"); Container container = getContentPane(); container.setLayout(new FlowLayout()); username = new JLabel("用户名"); username.setToolTipText("请输入用户名"); password = new JLabel("密 码"); password.setToolTipText("密码不能少于6位"); email = new JLabel("邮 箱"); email.setToolTipText("邮箱中必须包含@字符"); telephone = new JLabel("电 话"); telephone.setToolTipText("电话只能为数字"); usernameField = new JTextField(15); usernameField.addActionListener(this); passwordField = new JPasswordField(15); passwordField.addActionListener(this); emailField = new JTextField(15); emailField.addActionListener(this); teleField = new TextField(21); teleField.addActionListener(this); teleField.addTextListener(this); registButton = new JButton("注册"); cancelButton = new JButton("取消"); container.add(username); container.add(usernameField); container.add(password); container.add(passwordField); container.add(email); container.add(emailField); container.add(telephone); container.add(teleField); container.add(registButton); container.add(cancelButton); registButton.addActionListener(this); cancelButton.addActionListener(this); setSize(250,200); setVisible(true); setResizable(false); } public void textValueChanged(TextEvent event) { if (event.getSource() == teleField) { /*if (!checkNumber(teleField.getText())) { JOptionPane.showMessageDialog(this,"电话必须为数字","温馨提示",JOptionPane.INFORMATION_MESSAGE); teleField.setText(""); } */ } } public void actionPerformed(ActionEvent event) { if (event.getSource() == usernameField) { if (usernameField.getText().equals("")) { JOptionPane.showMessageDialog(null,"用户名不能为空","温馨提示",JOptionPane.INFORMATION_MESSAGE); } } if (event.getSource() == passwordField) { if (passwordField.getPassword().length == 0) { JOptionPane.showMessageDialog(this,"密码不能为空","温馨提示",JOptionPane.INFORMATION_MESSAGE); } else if (passwordField.getPassword().length < 6) { JOptionPane.showMessageDialog(this,"密码长度不能小于6位","温馨提示",JOptionPane.INFORMATION_MESSAGE); passwordField.setText(""); } } if (event.getSource() == emailField) { if (emailField.getText().indexOf("@") < 0 || emailField.getText().indexOf("@") >= (emailField.getText().length() - 1) || emailField.getText().equals("")) { JOptionPane.showMessageDialog(this,"您的邮箱格式不正确","温馨提示",JOptionPane.INFORMATION_MESSAGE); emailField.setText(""); } } if (event.getSource() == teleField) { if (teleField.getText().equals("")) { JOptionPane.showMessageDialog(this,"联系电话不能为空","温馨提示",JOptionPane.INFORMATION_MESSAGE); } else if (!checkNumber(teleField.getText())) { JOptionPane.showMessageDialog(this,"电话必须为数字","温馨提示",JOptionPane.INFORMATION_MESSAGE); teleField.setText(""); } } if (event.getSource() == registButton) { if (usernameField.getText().equals("") || passwordField.getPassword().length == 0 || emailField.getText().equals("") || teleField.getText().equals("")) { JOptionPane.showMessageDialog(this, "您填写的信息不完整","温馨提示",JOptionPane.INFORMATION_MESSAGE); usernameField.setText(""); passwordField.setText(""); emailField.setText(""); teleField.setText(""); } else if (passwordField.getPassword().length < 6) { JOptionPane.showMessageDialog(this,"密码长度不能小于6位","温馨提示",JOptionPane.INFORMATION_MESSAGE); passwordField.setText(""); } else if (emailField.getText().indexOf("@") < 0 || emailField.getText().indexOf("@") >= (emailField.getText().length() - 1)) { JOptionPane.showMessageDialog(this,"您的邮箱格式不正确","温馨提示",JOptionPane.INFORMATION_MESSAGE); emailField.setText(""); } else if (!checkNumber(teleField.getText())) { JOptionPane.showMessageDialog(this,"电话必须为数字","温馨提示",JOptionPane.INFORMATION_MESSAGE); teleField.setText(""); } else JOptionPane.showMessageDialog(this,"恭喜您,注册成功","温馨提示",JOptionPane.INFORMATION_MESSAGE); } if (event.getSource() == cancelButton) { usernameField.setText(""); passwordField.setText(""); emailField.setText(""); teleField.setText(""); } } public boolean checkNumber(String str) { for (int i=0;i<str.length();i++) { return false; } return true; } public static void main(String args[]) { Text application = new Text(); application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值