目录
标题一: 登录界面编写
标题二;登录界面之注册(一个类)编写
标题三:登录界面之登录编写
在登录界面这里,我们先编写一个登录界面出来,这只是一个界面,还没有实现验证账号密码和注册的功能,但得有这个界面做媒介 。
界面如下:
1.登陆界面代码在这里,因为我还设计了另一个类 :”登录界面之登录(这个类在下面有)“,一旦你点击登录,就会 new 登录界面之登录(),注册同理,会new 登录界面之注册()。
2.注意,main函数在所有代码中并不重要,最重要的是构造方法,我把setFrame()等方法都放到了构造方法里,这样new一个类的对象出来时就能实现这些方法。
package 生活管家;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class 登录界面 {
private JFrame frame;//窗口框架
private JLabel loginAccount;//账号标签
private JTextField field1;//输入的账号文本
private JLabel loginCode;//密码标签
private JPasswordField field2;//密码文本
private JButton loginButton;//登录按钮
private JButton registerButton;//注册按钮
// private JLabel idea;
// private JLabel idea2;
public static void main(String[] args) {
new 登录界面();
}
public 登录界面(){
setFrame();
listen();
}
//窗口设定
public void setFrame() {
//界面设计
frame=new JFrame("活力长者社区系统登录");
frame.setBounds(460,300,400,300);
frame.setLayout(new FlowLayout(FlowLayout.CENTER));
frame.setLocationRelativeTo(null);//设置窗口在屏幕位置居中
//账号密码,注册登录
loginAccount=new JLabel("账号");
field1=new JTextField("",30);//账号框
loginCode=new JLabel("密码");
field2=new JPasswordField("",30);//密码框
loginButton=new JButton("登录");
registerButton=new JButton("注册");
// idea=new JLabel();//点击登录时文字提示
// idea2=new JLabel();//点击注册时文字提示
frame.add(loginAccount);
frame.add(field1);
frame.add(loginCode);
frame.add(field2);
frame.add(loginButton);
frame.add(registerButton);
// frame.add(idea);
// frame.add(idea2);
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
//监听设置
public void listen(){
//监听,并输出账号和密码
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// frame.setVisible(false);
new 登录界面之登录(field1.getText(), String.valueOf(field2.getPassword()),frame);
}
});
registerButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.setVisible(false);
new 登录界面之注册();
}
});
}
}
我们先实现注册功能,注册成功的账号密码会保存在文件 admin+passWord.txt 里,这里我加了.txt,这样保存的时候以文本文档存放。
package 生活管家;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class 登录界面之注册 {
JFrame frame;
private JPanel contentPanel = new JPanel();
// 设置按钮组件
private JButton ok = new JButton("确定注册");
private JButton back = new JButton("返回登录界面");
private JLabel jlb1 = new JLabel("用户名:");
private JLabel jlb2 = new JLabel("密码:");
// 设置文本框组件
private JTextField admin = new JTextField("账户名不要超过6个字符哦",22);
private JTextField password = new JTextField("6位数密码",22);
private JTextField idea=new JTextField("",33);
//文件
private static File file=new File("admin+passWord.txt");
public static void main(String[] args) {
new 登录界面之注册();
}
//构造方法
public 登录界面之注册()
{
setFrame();
addListener();
}
//窗口设定
public void setFrame() {
//界面设计
frame=new JFrame("用户注册");
frame.setBounds(460, 300, 400, 300);
frame.setLayout(new GridLayout(4,1));
frame.setLocationRelativeTo(null);//设置窗口在屏幕位置居中
//账号
JPanel panel1=new JPanel();
panel1.add(jlb1);
panel1.add(admin);
//密码
JPanel panel2=new JPanel();
panel2.add(jlb2);
panel2.add(password);
//注册与返回
JPanel panel3=new JPanel();
panel3.add(back);
panel3.add(ok);
//提示
JPanel panel4=new JPanel();
panel4.add(idea);
frame.add(panel1);
frame.add(panel2);
frame.add(panel3);
frame.add(panel4);
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
//监听
private void addListener() {
//注册监听
ok.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {//账号密码书写不规范或没输入就会提示·
if (admin.getText().length()>6||password.getText().length()>6||admin.getText().isEmpty()||password.getText().isEmpty())
{
idea.setText("怎么了,迷路了吗,请按照要求输入哦");
}else {
setRegister(admin.getText(), password.getText());
idea.setText("注册成功了!,可以继续注册或返回登录界面哦");
}
}
});
//返回监听
back.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.setVisible(false);
new 登录界面();
}
});
}
// 实现注册账户
public void setRegister(String admin, String passWord) {
//文件写入
try {
BufferedWriter fileWriter=new BufferedWriter(new FileWriter(file,true));//注意加true,意思是以追加的形式存入文件,如果是false那就是覆盖的形式
fileWriter.write(admin+"="+passWord);//"="号是为了登录时方便split验证
fileWriter.newLine();//换行,方便read.
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
System.out.println("输入错误");
e.printStackTrace();
}
}
}
注意,这个类没有frame,验证成功就会自动登录,这个类的构造方法有三个形参,是从登录界面那里传进来的,即用户输入的账号,密码,还有一个是登录界面的那个frame,在这个案例中登录成功后什么都不显示,因为没有编写登录成功后要做什么,登录成功后要new 什么界面出来我没有写,这里只教账号密码登录。
package 生活管家;
import javax.swing.*;
import java.awt.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class 登录界面之登录 {
public static void main(String[] args) {
}
public 登录界面之登录(String admin,String password,JFrame frame)
{
if(login(admin,password))
{
frame.setVisible(false);//如果login函数判断账号密码正确,为了美观,将登录界面变为不可见
//那登录成功后要new 什么界面出来我没有写,你自己决定,这里只教账号密码登录
//例如:在这里的if语句里写 new ......,就ok了
}else{
JDialog mistakeCase=new JDialog(frame,"提示");
mistakeCase.setBounds(400,500,200,100);
mistakeCase.setLocationRelativeTo(null);
JTextField fieldOfError=new JTextField("账号或密码输入错了哦",25);
mistakeCase.add(fieldOfError);
mistakeCase.setVisible(true);
mistakeCase.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
}
//判断账号与密码是否正确
public boolean login(String username, String password) {
boolean flag = false;
BufferedReader lbd = null;
try {
lbd = new BufferedReader(new FileReader("admin+passWord.txt"));
String line = null;
while ((line = lbd.readLine()) != null) {
String[] datas = line.split("=");//Java中的 split 函数是用于按指定字符去分割某个字符串,结果以字符串数组形式返回
if (datas[0].equals(username) && datas[1].equals(password)) {
flag = true;
break;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
assert lbd != null;
try {
lbd.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}
}
结束啦
本案例适用于大一只学了文件还没学数据库的情况,可以作为参考,共勉!!
风轻轻吹,好暖好暖。