先说一下具体实现的功能吧:用户注册后会将注册的对象存入内存中,登录时会遍历注册的对象列表,判断是否登录成功;
登录和注册界面:

本次实验分为六个模块
import javax.swing.*;import java.awt.*;public class LoginUI { public void initUI(){ JFrame jf = new JFrame("登录界面"); jf.setSize(500,700); jf.setLocationRelativeTo(null); jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); FlowLayout flow = new FlowLayout(); //使用流式布局 jf.setLayout(flow); //注意调整图片尺寸,图片比框体大的话会无法显示,此处图片尺寸为500*498。 // 我是使用WPS会员进行调整的,欢迎网友提出更好的方法。 ImageIcon image = new ImageIcon("C:\\Users\\13630\\Pictures\\衡水二中.jpg"); JLabel imageJla = new JLabel(image); JLabel nameJla = new JLabel("账号:"); JLabel pwdJla = new JLabel("密码:"); //为输入框设置大小 Dimension dim = new Dimension(400,35); JTextField nameInput = new JTextField(); JPasswordField pwdInput = new JPasswordField(); nameInput.setPreferredSize(dim); pwdInput.setPreferredSize(dim); JButton btn1 = new JButton("登录"); JButton btn2 = new JButton("注册"); jf.add(imageJla); jf.add(nameJla); jf.add(nameInput); jf.add(pwdJla); jf.add(pwdInput); jf.add(btn1); jf.add(btn2); //创建监听器 LoginListener loginListener = new LoginListener(); //将输入框传给监听器的成员变量loginInput loginListener.loginInput.setNameInput(nameInput); loginListener.loginInput.setPwdInput(pwdInput); //给按钮加上监听器 btn1.addActionListener(loginListener); btn2.addActionListener(loginListener); jf.setVisible(true); //可视化 } public static void main(String[] args) { new LoginUI().initUI(); }}import javax.swing.*;import java.awt.*;/** * 设计逻辑与登录界面基本相同 */public class RegistUI { public void initUI(LoginListener loginListener){ JFrame jf = new JFrame("注册界面"); jf.setSize(500,700); jf.setLocationRelativeTo(null); jf.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); FlowLayout flow = new FlowLayout(); jf.setLayout(flow); ImageIcon image = new ImageIcon("C:\\Users\\13630\\Pictures\\衡水二中.jpg"); JLabel nameJla = new JLabel("请输入你的账号:"); JLabel pwdJla = new JLabel("请输入你的密码:"); JLabel imageJla = new JLabel(image); Dimension dim = new Dimension(340,35); JTextField nameInput = new JTextField(); JPasswordField pwdInput = new JPasswordField(); nameInput.setPreferredSize(dim); pwdInput.setPreferredSize(dim); JButton btn1 = new JButton("确定"); JButton btn2 = new JButton("取消"); jf.add(imageJla); jf.add(nameJla); jf.add(nameInput); jf.add(pwdJla); jf.add(pwdInput); jf.add(btn1); jf.add(btn2); //将输入框传给监听器的成员变量registInput loginListener.registInput.setNameInput(nameInput); loginListener.registInput.setPwdInput(pwdInput); btn1.addActionListener(loginListener); btn2.addActionListener(loginListener); jf.setVisible(true); } }import javax.swing.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;public class LoginListener implements ActionListener { //为了将两个输入框中的内容传进监听器中,我们将两个输入框封装成一个类,作为监听器的成员变量,同时在登录和注册界面中,将输入框传入该类。 RegistInput registInput = new RegistInput(); LoginInput loginInput = new LoginInput(); //同上 ArrayList<User> userList = new ArrayList<>(); @Override public void actionPerformed(ActionEvent e){ String action = e.getActionCommand(); if(action.equals("登录")){ //没有被注册时,直接输出:用户名不存在!! if(userList.size()==0){ JOptionPane.showMessageDialog (null, "用户名不存在!!"); } //将输入框中的字符串取出来放在name,pwd中 String name = loginInput.getNameInput().getText(); String pwd = loginInput.getPwdInput().getText(); boolean nameExist = false; //用nameExist记录在遍历过程中,是否找到登录时使用的用户名 //遍历List集合,判断能否登录成功或登录失败的原因 for(User u : userList){ if(u.name.equals(name)){ nameExist = true; if(u.pwd.equals(pwd)){ JOptionPane.showMessageDialog (null, "登录成功!!"); break; }else{ JOptionPane.showMessageDialog (null, "密码错误!!"); break; } } } if(!nameExist){ JOptionPane.showMessageDialog (null, "用户名不存在!!"); } }else if(action.equals("注册")){ RegistUI registUI = new RegistUI(); registUI.initUI(this); }else if(action.equals("确定")){ //输入框中的数据创建一个user对象,加入到List集合中 String name = registInput.getNameInput().getText(); String pwd = registInput.getPwdInput().getText(); User user = new User(name,pwd); userList.add(user); JOptionPane.showMessageDialog (null, "注册成功!!"); }else if(action.equals("取消")){ System.exit(0); //退出 } }}import javax.swing.*;public class LoginInput { JTextField nameInput = null; JPasswordField pwdInput = null; public JTextField getNameInput() { return nameInput; } public void setNameInput(JTextField nameInput) { this.nameInput = nameInput; } public JPasswordField getPwdInput() { return pwdInput; } public void setPwdInput(JPasswordField pwdInput) { this.pwdInput = pwdInput; }}import javax.swing.*;public class RegistInput { JTextField nameInput = null; JPasswordField pwdInput = null; public JTextField getNameInput() { return nameInput; } public void setNameInput(JTextField nameInput) { this.nameInput = nameInput; } public JPasswordField getPwdInput() { return pwdInput; } public void setPwdInput(JPasswordField pwdInput) { this.pwdInput = pwdInput; }}public class User { String name; String pwd; User(String name,String pwd){ this.name = name; this.pwd = pwd; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; }}if(action.equals("注册")){ RegistUI registUI = new RegistUI(); registUI.initUI(this);}