JAVA基础-登录注册界面开发

界面开发步骤:

  1. 导入开发包:

  • java.awt

  • 早期的界面开发包,样式老旧,功能不全

  • 其中 颜色 尺寸 字体 布局 等类都可以继续使用

  • javax.swing

  • 升级之后的界面开发包 都可以使用

  1. 创建一个类和方法(设置窗体和组件对象)

  • 具体设置步骤:

  • 创建一个窗体对象 - JFrame

  • 设置窗体对象的相关属性

  • 创建流式布局对象

  • 创建组件对象、按钮、输入框、标签等

  • 设置组件对象的属性以及内容

  • 将组件一一添加到窗体对象中去

  • 可视化

  1. 创建一个主函数,在主函数中 创建LoginUI 对象调用 initUI()方法

package myplace;
import java.awt.*;
import java.util.Random;
import javax.swing.*;
import java.util.Scanner;
public class LoginUI {
    //按钮监听器
    LoginListener loginl=new LoginListener();
    public void initUI() {
        //创建窗体
        JFrame jf=new JFrame();
        jf.setTitle("登录界面");
        jf.setSize(500,700);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭选项
        //设置布局管理方式:流式布局表示从左至右依次摆放,一行不够就切换下一行,整体居中
        FlowLayout flow=new FlowLayout();
        jf.setLayout(flow);
        //创建组件对象 按钮(JButton) 标签(JLable)输入框(JTextField/JPasswordField)
        JButton btn=new JButton();
        JButton btnR=new JButton();
        JLabel nameJla=new JLabel();
        JLabel pwdJla=new JLabel();
        JTextField nameIn=new JTextField();
        JPasswordField pwdIn=new JPasswordField();
        
        ImageIcon img=new ImageIcon("images/cat2.jpg");//图片不是组件不能直接放在窗体上,必须放在按钮或标签等组件上,将组件放在窗体上
        JLabel imgJla=new JLabel();
        imgJla.setIcon(img);
        
        
        btn.setText("登录");
        btnR.setText("注册");
        nameJla.setText("账号:");
        pwdJla.setText("密码:");
        
        Dimension dim=new Dimension();
        dim.setSize(410,35);//输入框的尺寸
        nameIn.setPreferredSize(dim);//在流式布局下设置尺寸必须使用该方法,表示高宽随窗口动态变化
        pwdIn.setPreferredSize(dim);
        //加载组件到窗体上
        jf.add(imgJla);
        
        jf.add(nameJla);
        jf.add(nameIn);
        jf.add(pwdJla);
        jf.add(pwdIn);
        jf.add(btn);
        jf.add(btnR);
        jf.setVisible(true);
        
        //按钮监听
        btn.addActionListener(loginl);
        btnR.addActionListener(loginl);
        //对象传递
        loginl.setInput(nameIn, pwdIn);
        loginl.setLoginUI(this);//this是LoginUI
    }
    //注册界面(和登录界面设置类似)
    public void initRegisterUI() {
        JFrame jf=new JFrame();
        jf.setTitle("注册界面");
        jf.setSize(500,700);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        FlowLayout flow=new FlowLayout();
        jf.setLayout(flow);
        
        JButton btn=new JButton();
        JLabel nameJla=new JLabel();
        JLabel pwdJla=new JLabel();
        JTextField nameIn=new JTextField();
        JTextField pwdIn=new JTextField();
        
        ImageIcon img=new ImageIcon("images/cat2.jpg");
        JLabel imgJla=new JLabel();
        imgJla.setIcon(img);
        
        btn.setText("确定");
        nameJla.setText("账号:");
        pwdJla.setText("密码:");
        
        Dimension dim=new Dimension();
        dim.setSize(410,35);
        nameIn.setPreferredSize(dim);
        pwdIn.setPreferredSize(dim);
        
        jf.add(imgJla);
        jf.add(nameJla);
        jf.add(nameIn);
        jf.add(pwdJla);
        jf.add(pwdIn);
        jf.add(btn);
        
        jf.setVisible(true);
        //添加监听器
        btn.addActionListener(loginl);
        //传值
        loginl.setRegistInput(nameIn,pwdIn);
        
    }
    
    public static void main(String[] args) {
        LoginUI loginui=new LoginUI();
        loginui.initUI();
//不用创建注册界面对象,因为注册界面是按登录界面上的注册按钮触发的,需要监听
    }
}

按钮监听器的实现步骤

1:创建一个类 实现 ActioinListener动作监听器

2: 打开ActionListener 的源码 将其中的方法复制到这个类中

3: 在方法中加入点击按钮之后要执行的代码

4: 将写好的类拿到按钮对象所在的位置创建一个对象

5: 按钮对象通过调用 addActionListener 方法添加监听器对象

package myplace;
import java.awt.event.ActionListener;
import java.util.HashMap;

import javax.swing.*;

import java.awt.event.ActionEvent;
//接口的目的就是抽象方法,以方法进行分类
public class LoginListener implements ActionListener{
    LoginUI loginui;
    JTextField nameIn2;
    JPasswordField pwdIn2;
    JTextField nameInR;
    JTextField pwdInR;
    
    public void setLoginUI(LoginUI loginui) {
        this.loginui=loginui;
    }
    //登录界面传递账号和密码
    public void setInput(JTextField nameIn2,JPasswordField pwdIn2) {
        this.nameIn2=nameIn2;
        this.pwdIn2=pwdIn2;
    }
    
    //注册界面传递账号和密码
    public void setRegistInput(JTextField nameInR,JTextField pwdInR) {
        this.nameInR=nameInR;
        this.pwdInR=pwdInR;
    }
    
    //存储账号密码
    HashMap<String,String>userInfo=new HashMap<>();
    
    
    public void actionPerformed(ActionEvent e) {
        String action=e.getActionCommand();
        //如果按下登录
        if(action.equals("登录")){
            String name=nameIn2.getText();
            String pwd=pwdIn2.getText();
            System.out.println("欢迎用户"+name+"登录");
            //获取该用户名对应的密码
            String getpwd=userInfo.get(name);
            //如果密码存在
            if(getpwd!=null) {
                if(getpwd.equals(pwd)) {
                    System.out.println("登录成功");
                }else {
                    System.out.println("用户名和密码不匹配");
                }
            //如果密码不存在
            }else {
                System.out.println("请先注册!");
            }
        }
        if(action.equals("注册")) {
            //按下注册按钮,会调用loginui对象的创建注册界面方法
            loginui.initRegisterUI();    
        }
        if(action.equals("确定")) {
            String name=nameInR.getText();
            String pwd=pwdInR.getText();
            
            if (userInfo.get(name)!=null) {
                System.out.println("用户"+name+"已经注册过!");
                return;
            }
            userInfo.put(name, pwd);
            System.out.println ("用户名:" + name + "-- 密码:" + pwd+"注册成功");
        }
        }
}

实现:

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值