基本步骤
1.创建一个窗体
2.给按钮加上监听
3.获取界面输入框中的值给监听
4.存储用户信息
5.实现登录注册逻辑
1.创建一个窗体
public void LE(){
JFrame jf=new JFrame();
jf.setTitle("用户登录界面");
jf.setSize(700,500);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jf.setLayout(new FlowLayout());
JLabel name=new JLabel("账号");
JLabel pw=new JLabel("密码");
Dimension dim=new Dimension(300,50);
JTextField namein=new JTextField();
namein.setPreferredSize(dim);
JPasswordField pwin=new JPasswordField();
pwin.setPreferredSize(dim);
JButton btn1=new JButton("登录");
JButton btn2=new JButton("注册");
jf.add(name);
jf.add(namein);
jf.add(pw);
jf.add(pwin);
jf.add(btn1);
jf.add(btn2);
jf.setVisible(true);
}
注意
1.在加上多个按钮,输入框,标签时要先设置布局
2.在添加密码的输入框时注意不是普通的输入框
3.设置输入框大小的方法
Dimension dim=new Dimension(300,50);
JTextField namein=new JTextField();
namein.setPreferredSize(dim);
2.给按钮加上监听
1.方法重写
public class Btnlistener implements ActionListener {
public void actionPerformed(ActionEvent e) {}
2.界面上添加监听
Btnlistener listener=new Btnlistener();
btn1.addActionListener(listener);
btn2.addActionListener(listener);
3.添加一个程序入口
public static void main(String[]args){
ULE login=new ULE();
login.LE();
}
3.传值
1.在监听中定义属性
TextField Fname;
JPasswordField Fpw;
注意
要获取什么样的类型的数据就定义什么类型
2.将界面上的输入框内容传给监听
listener.Fname=namein;
listener.Fpw=pwin;
3.获取输入框内容
String name=namein.getText();
String pw=pwin.getText();
4.存储用户信息
1.想要存储用户的信息,就要先定义一个User类
public class User {
String name;
String pw;
public User(String name, String pw) {
this.name = name;
this.pw = pw;
}
}
2.为了存储User对象,我们使用Arraylist<User>来储存
它常用的四个特性方法为
get
add
remove
size()
ArrayList<User> userlist =new ArrayList();
5.登录注册逻辑
-找到有账号-比较密码-输出成功语句
登录-遍历用户对象
-未找到账号-输出提示注册语句
-找到有账号-输出提示登录语句
注册-遍历用户对象
-未找到账号-添加该用户并输出注册成功语句
0.获取按钮上的内容
String btn=e.getActionCommand();
System.out.println("你点击了"+btn);
1.遍历用户
if(btn.equals("登录")) {
//登录时需要遍历账号是否已经存在
for (int i = 0; i < userlist.size(); i++) {
//遍历取出用户对象
User getuser = userlist.get(i);
2.比较密码
if (getuser.name.equals(name)) {
//比较密码
if(getuser.pw.equals(pw)){
JOptionPane.showMessageDialog(null,"登录成功!");
return;
}}}
return
表示结束方法不再循环
3.登录时未遍历到用户
JOptionPane.showMessageDialog(null,"请先注册");}
注册时遍历对象及比较输入框中内容几乎一致
else if(btn.equals("注册")){
//注册时需要遍历账号是否已经存在
for (int t = 0; t< userlist.size(); t++) {
//遍历取出用户对象
User getuser= userlist.get(t);
if (getuser.name.equals(name)) {
//弹出一个弹窗
JOptionPane.showMessageDialog(null, "用户已经存在,请直接登录!");
//之后直接结束方法,后边不会再循环
return;}}
4.注册时未遍历到用户
//将数据打包为一个对象存入list
User user = new User(name, pw);
userlist.add(user);
JOptionPane.showMessageDialog(null, "恭喜!创建了一个新的用户!");
}
}}