问题:我制作了一个登录程序,我想把注册的账户密码放在一个arrlist集合里,但是在B类把数据传入集合后(输出显示添加成功了)A类调用显示集合没数据
下面是控制台
B类显示的集合数据[aa]
A类显示的集合数据[]
我不知道哪里出现问题了,麻烦看一下
下面是代码
java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//LoginFrame 登陆窗口 功能 实现用户登陆 ,如果成功就跳转
//LoginFrame 继承于窗口类, 并实现ActionListener接口
public class LoginFrame extends JFrame implements ActionListener {
// 申明需要的组件
JButton jb1, jb2,jb3,jb4;//按钮
JTextField jtf1;//文本框
JPasswordField jpf1;//密码框
String user;
String pass;
register e1 =new register();
public LoginFrame() {
// 窗口属性的设置
setTitle("登陆窗");// 窗口标题
setSize(300, 180);// 窗口大小
setLocationRelativeTo(null);// 窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);// 关闭窗口则退出虚拟机
setLayout(new FlowLayout());// 设置布局流式布局
JPanel jp = new JPanel(new GridLayout(4, 1));// 设置面板为表格布局4行1列
// 第一行
JPanel jp1 = new JPanel();
JLabel jl1 = new JLabel("账号 ");
jtf1 = new JTextField(12);
jp1.add(jl1);
jp1.add(jtf1);
jp.add(jp1);
// 第二行
JPanel jp2 = new JPanel();
JLabel jl2 = new JLabel("密码 ");
jpf1 = new JPasswordField(12);
jp2.add(jl2);
jp2.add(jpf1);
jp.add(jp2);
// 第三行
JPanel jp3 = new JPanel();
jb1 = new JButton("登陆");
jb1.addActionListener(this);// 添加动作响应器
jb2 = new JButton("重置");
jb2.addActionListener(this);// 添加动作响应器
jb3 = new JButton("注册");
jb3.addActionListener(this);// 添加动作响应器
jb4 = new JButton("帮助");
jb4.addActionListener(this);// 添加动作响应器
jp3.add(jb1);
jp3.add(jb2);
jp3.add(jb3);
jp3.add(jb4);
jp.add(jp3);
// 第四行
JPanel jp4 = new JPanel();
JLabel jl3 = new JLabel("欢迎进入YANG管理系统");
jl3.setForeground(Color.DARK_GRAY);
jp4.add(jl3);
jp.add(jp4);
add(jp);
}
// 动作响应
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();// 根据动作命令,来进行分别处理
if (cmd.equals("登陆")) {
user = jtf1.getText();// 取得用户名
pass = new String(jpf1.getPassword());// 取得密码
System.out.println(e1.user1);
if (user.equals(e1.user1) && pass.equals(e1.pass1)) {// 判断是否登录成功
// 如果登录成功
JOptionPane.showMessageDialog(this, "right", "通知", 1);
setVisible(false);// 本窗口隐藏,
new MainFrame(user).setVisible(true);// 新窗口显示
dispose();//本窗口销毁,释放内存资源
} else {
//如果登录失败 弹出提示
JOptionPane.showMessageDialog(this, "账户或密码错误", "通知", 0);
clearText();//清空文本框 密码框的输入
}
} else if (cmd.equals("重置")) {
clearText();
} else if (cmd.equals("帮助")) {
JOptionPane.showMessageDialog(this, "管2", "帮助", 0);
}
else if (cmd.equals("注册")) {
new register().setVisible(true);//创建登录窗口,并可见
}
}
private void clearText() {//清空文本框, 密码框的输入
jtf1.setText("");
jpf1.setText("");
}
//main方法, 程序的入口
public static void main(String[] args) {
new LoginFrame().setVisible(true);//创建登录窗口,并可见
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.ArrayList;
import javax.swing.*;
//LoginFrame 登陆窗口 功能 实现用户登陆 ,如果成功就跳转
//LoginFrame 继承于窗口类, 并实现ActionListener接口
public class register extends JFrame implements ActionListener {
// 申明需要的组件
JButton jb1, jb2, jb3, jb4;//按钮
JTextField jtf1,jtf2;//文本框
JPasswordField jpf1;//密码框
ArrayList name1 = new ArrayList();
ArrayList user1 = new ArrayList();
ArrayList pass1 = new ArrayList();
public register() {
// 窗口属性的设置
setTitle("注册窗口");// 窗口标题
setSize(300, 250);// 窗口大小
setLocationRelativeTo(null);// 窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);// 关闭窗口则退出虚拟机
setLayout(new FlowLayout());// 设置布局流式布局
JPanel jp = new JPanel(new GridLayout(5, 1));// 设置面板为表格布局4行1列
// 第一行
JPanel jp1 = new JPanel();
JLabel jl1 = new JLabel("欢迎进入YANG管理系统注册界面");
jl1.setForeground(Color.DARK_GRAY);
jp1.add(jl1);
jp.add(jp1);
add(jp);
JPanel jp5 = new JPanel();
JLabel jl5 = new JLabel("用户名");
jtf2 = new JTextField(12);
jp5.add(jl5);
jp5.add(jtf2);
jp.add(jp5);
JPanel jp4 = new JPanel();
JLabel jl3 = new JLabel("账号 ");
jtf1 = new JTextField(12);
jp4.add(jl3);
jp4.add(jtf1);
jp.add(jp4);
// 第二行
JPanel jp2 = new JPanel();
JLabel jl2 = new JLabel("密码 ");
jpf1 = new JPasswordField(12);
jp2.add(jl2);
jp2.add(jpf1);
jp.add(jp2);
// 第三行
JPanel jp3 = new JPanel();
jb1 = new JButton("注册");
jb1.addActionListener(this);// 添加动作响应器
jb2 = new JButton("退出");
jb2.addActionListener(this);// 添加动作响应器
jb3 = new JButton("注册");
jb3.addActionListener(this);// 添加动作响应器
jb4 = new JButton("帮助");
jb4.addActionListener(this);// 添加动作响应器
jp3.add(jb1);
jp3.add(jb2);
//jp3.add(jb3);
jp3.add(jb4);
jp.add(jp3);
// 第四行
}
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();// 根据动作命令,来进行分别处理
if (cmd.equals("注册")) {
String name =jtf2.getText();
name1.add(name);
String user = jtf1.getText();// 取得用户名
user1.add(user);
String pass = new String(jpf1.getPassword());// 取得密码
pass1.add(pass);
System.out.println(pass+user);
System.out.println(name1.get(0));
System.out.println(user1.get(0));
System.out.println(user1);
pass1.get(0);
JOptionPane.showMessageDialog(this, "注册成功", "通知", 1);
setVisible(false);// 本窗口隐藏,
new LoginFrame().setVisible(true);// 新窗口显示
dispose();//本窗口销毁,释放内存资源
} else if (cmd.equals("退出")) {
new LoginFrame().setVisible(true);
dispose();//本窗口销毁,释放内存资源
} else if (cmd.equals("帮助")) {
JOptionPane.showMessageDialog(this, "help", "帮助", 0);
}
}
private void clearText() {//清空文本框, 密码框的输入
jtf1.setText("");
jtf2.setText("");
jpf1.setText("");
}
public void sign(){
user1.add("1");
System.out.println();
LoginFrame e =new LoginFrame();
System.out.println(e.user);
for(int x =0;x<user1.size();x++){
if ( e.user==user1.get(x)){
JOptionPane.showMessageDialog(this, "right", "通知", 1);
setVisible(false);// 本窗口隐藏,
new MainFrame(e.user).setVisible(true);// 新窗口显示
dispose();//本窗口销毁,释放内存资源
break;
}
}
}
}