用java创建一个简易登录窗体并实现监听

一、创建一个简易窗体UI并实现监听的步骤

1.创建一个窗体对象

2.设置窗体对象的属性和功能

3.设置窗体的布局格式

4.创建组件对象(包括按钮、输入框等)

5.设置组件对象的属性和内容(包括尺寸、颜色、字体等)

6.给窗体添加组件

代码详解——以创建一个学生管理系统登录界面为例

这里需要用到下面这两个包进行开发

  • java.awt
  • javax.swing
package com.example.zyf0923;

import javax.swing.*;
import java.awt.*;

public class StuUI{

    // 声明一个方法 写开发界面的代码
    public void initUI(){
        JFrame jf = new JFrame ();
        jf.setTitle ("学生管理系统");
        jf.setSize (500,600);
        jf.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);// 关闭时退出进程

        // 设置布局 FlowLayout
        jf.setLayout (new FlowLayout());

        // 创建组件对象
        // 标签  输入框 按钮
        JLabel idLab = new JLabel ();
        JLabel pwdLab = new JLabel ();

        JTextField idIn = new JTextField ();
        JPasswordField pwdIn = new JPasswordField ();

        JButton btnLogin = new JButton ();
        JButton btnRegist = new JButton ();

        // 设置组件的属性  以及内容
        idLab.setText ("学号:");
        pwdLab.setText ("密码:");

        btnLogin.setText("登录");
        btnRegist.setText ("注册");

        //字体
        Font font = new Font ("黑体", Font.BOLD, 20);
        idLab.setFont (font);
        pwdLab.setFont (font);
        btnLogin.setFont (font);
        btnRegist.setFont (font);
        idIn.setFont(font);
//        pwdIn.setFont (font);

        // 尺寸
        Dimension dim = new Dimension (390,35);
        idIn.setPreferredSize (dim);
        pwdIn.setPreferredSize (dim);

        // 窗体添加组件
        jf.add (idLab);
        jf.add (idIn);
        jf.add (pwdLab);
        jf.add (pwdIn);
        jf.add (btnLogin);
        jf.add (btnRegist);


        jf.setVisible (true);// 可视化

    }


    public static void main(String[] args){
//        StuUI stuUi = new StuUI();
//        stuUi.initUI ();
        new StuUI().initUI ();
    }


}

二、创建一个动作监听器(ActionListener)实现对按钮的监听加载

1.创建一个类implements ActionListener

2.重写ActionListener中的方法

        这里面的ActionEvent: 动作事件 事件记录信息对象

  • 记录动作发生时的相关数据,打包对象传入响应方法
  • 通过事件对象可以调用事件发生时的数据, 比如 : 被点击按钮上的字

 3: 将写好的监听模块类 在按钮所在的位置创建一个对象

4:调用按钮自带的注册监听的方法 添加监听对象

创建一个动作监听器的代码:

package com.example.zyf0923;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class StuListener implements ActionListener{

    public void actionPerformed(ActionEvent e){
        // 写抽象方法的 具体实现
        // 写点击按钮之后具体要执行的代码
        String actionStr = e.getActionCommand ();
        System.out.println (actionStr+"被点击了!!");
    }

}

// 按钮所在类/方法(在StuUI中)
    // 监听加载
    StuListener stul = new StuListener ();
    btnLogin.addActionListener (stul);
    btnRegist.addActionListener(stul);

三、完成监听加载后创建好学生类并实现登录注册以及学生保存

StuUI类:

package com.zsj0927;

import javax.swing.*;
import java.awt.*;

// 创建一个学生管理系统UI类
public class StuUI {
    //使用构造方法
    public void initUI(){
        //创建学生管理系统的登录窗体
        JFrame jfLogin = new JFrame();      //创建一个登录窗体
        jfLogin.setTitle("学生管理系统");     //设置窗体标题
        jfLogin.setSize(500,600);       //设置窗体宽度和高度
        jfLogin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     //设置关闭窗口机制

        //设置窗体的布局
    jfLogin.setLayout(new FlowLayout());        //设置布局为流式布局

        //创建组件对象
        JLabel idLab = new JLabel();        //创建账号标签
        JLabel pwdLab = new JLabel();       //创建密码标签

        JTextField idIn = new JTextField();     //创建账号输入框
        JPasswordField pwdIn = new JPasswordField();        //创建密码输入框

        JButton btnLogin = new JButton();   //创建登录按钮
        JButton btnRejist = new JButton();        //创建注册按钮

        //设置组件的属性和内容
        idLab.setText("学号");        //设置账号标签内容为“学号“
        pwdLab.setText("密码");       //设置密码标签内容为“密码”

        btnLogin.setText("登录");     //设置登录按钮内容为”登录“
        btnRejist.setText("注册");      //设置注册按钮cu内容为”注册“

        Font font = new Font("粗体",Font.BOLD,20);        //创建一个字体对象
        idLab.setFont(font);        //设置账号标签内容字体为上面创建的字体
        pwdLab.setFont(font);       //设置密码标签内容字体为上面创建的字体
        btnLogin.setFont(font);     //设置登录按钮内容字体为上面创建的字体
        btnRejist.setFont(font);      //设置注册按钮内容字体为上面创建的字体

        Dimension dim = new Dimension(400,40);      //创建一个尺寸对象
        idIn.setPreferredSize(dim);     //设置账号输入框的尺寸为上面创建的尺寸
        pwdIn.setPreferredSize(dim);        //设置密码输入框的尺寸为上面创建的尺寸

        //给窗体添加组件
        jfLogin.add(idLab);
        jfLogin.add(idIn);
        jfLogin.add(pwdLab);
        jfLogin.add(pwdIn);
        jfLogin.add(btnLogin);
        jfLogin.add(btnRejist);

        //窗体可视化
        jfLogin.setVisible(true);

        //监听加载
        StuListener stul = new StuListener();
        btnLogin.addActionListener(stul);
        btnRejist.addActionListener(stul);

        //将界面上输入框的地址传送给监听器对象使用,用来在点击按钮时获取文本框内的文本
        stul.idIn = idIn;
        stul.pwdIn = pwdIn;
        stul.jflogin = jfLogin;


    }


    public static void main(String[] args){
        new StuUI().initUI ();
    }

}


Student类

package com.zsj0927;

import javax.swing.*;
import java.awt.*;

public class Student {String stu_id;
    String stu_pwd;

    boolean isOnline = false;
    // 构造方法
    public Student(String stu_id,String stu_pwd) {
        this.stu_id = stu_id;
        this.stu_pwd = stu_pwd;
    }

}

StuListener类

package com.zsj0927;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;

public class StuListener implements ActionListener{
    public JFrame jflogin;
    // 定义输入框对象变量名
    JTextField idIn =null;
    JPasswordField pwdIn=null;

    //创建一个存储用户对象(学生)的列表
    ArrayList<Student> stuList = new ArrayList<>();
    public static void main(String[] args)  {
        File file = new File("D:\\java实验文件\\学生.txt");
        try {
            file.createNewFile();
            Writer out = new FileWriter(file);
            out.write("用户名存储\n");
            for (int i = 0; i < 100; i++) {
                Student stu=new Student("admin"+i,"admin123"+i);
                out.append(stu.stu_id+" "+stu.stu_pwd+"\n");
            }
            out.flush();
            out.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }



    }
    JFrame jfOperate;
    //改写ActionListener中的函数
    public void actionPerformed(ActionEvent e){
        //将抽象方法进行具体实现
        // 点击按钮后具体执行项
        String actionStr = e.getActionCommand();
        System.out.println(actionStr+"被点击了!");

        //获取文本框中的字符串
        String stu_id = idIn.getText();
        String stu_pwd = pwdIn.getText();
        System.out.println("stu_id:"+stu_id+"\n密码:"+stu_pwd);

        //如果点击登录
        if(actionStr.equals("登录")){
            //首先验证用户是否存在
            for(int i = 0; i < stuList.size();i++){
                Student getstu = stuList.get(i);
                if (getstu.stu_id.equals(stu_id)){
                    if(getstu.stu_pwd.equals(stu_pwd)){
                        getstu.isOnline = true;
                        JOptionPane.showMessageDialog(null,"登录成功!");
                        jflogin.setVisible(false);
                         jfOperate = new JFrame();
                        jfOperate.setTitle("学生个人中心");     //设置窗体标题
                        jfOperate.setSize(500,600);       //设置窗体宽度和高度
                        jfOperate.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     //设置关闭窗口机制

                        //设置窗体的布局
                        jfOperate.setLayout(new FlowLayout());        //设置布局为流式布局

                        //创建一个注销按钮组件
                        JButton btnCancell = new JButton();

                        //添加组件
                        jfOperate.add(btnCancell);

                        //设置组件内容
                        btnCancell.setText("注销");

                        //设置字体
                        btnCancell.setFont(new Font("粗体",Font.BOLD,20));

                        //监听加载
//                        StuListener stul = new StuListener();
                        btnCancell.addActionListener(this);

                        //窗体可视化
                        jfOperate.setVisible(true);
                    }

                    return;
                }

            }
            // 弹窗
            JOptionPane.showMessageDialog (null,
                    "该用户不存在,请先注册!");

        }

        //如果点击注册
        else if(actionStr.equals("注册")){
            //首先验证用户是否存在
            for(int i = 0; i < stuList.size();i++){
                Student getstu = stuList.get(i);
                if(getstu.stu_id.equals(stu_id)){
                    //弹窗
                    JOptionPane.showMessageDialog(null,"该用户以及存在,请直接登录");
                    return;
                }

            }
            Student stu = new Student(stu_id,stu_pwd);
            stuList.add(stu);
            System.out.println("恭喜注册成功,您是第"+stuList.size()+"位用户!");
            JOptionPane.showMessageDialog(null,"恭喜注册成功,您是第"+stuList.size()+"位用户");
        }else if(actionStr.equals("注销")){

             jfOperate.setVisible(false);
             jflogin.setVisible(true);
        }





    }




}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值