JavaGui实现登录界面编写+实现账号密码验证登录+文件存储

目录

标题一: 登录界面编写

标题二;登录界面之注册(一个类)编写 

标题三:登录界面之登录编写 


标题一: 登录界面编写

在登录界面这里,我们先编写一个登录界面出来,这只是一个界面,还没有实现验证账号密码和注册的功能,但得有这个界面做媒介 。

界面如下:

 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;
    }


}

结束啦

 本案例适用于大一只学了文件还没学数据库的情况,可以作为参考,共勉!!

风轻轻吹,好暖好暖。

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

76博ding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值