JasonYANG17 2022-12-26 16:52 采纳率: 93.3%
浏览 26
已结题

为啥我不能跨类传数据?

问题:我制作了一个登录程序,我想把注册的账户密码放在一个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;
                  }

        }

    }




}



  • 写回答

1条回答 默认 最新

  • pzzhao 2022-12-26 17:58
    关注

    1 你使用的register类不是同一个吧
    2 user1是list,你获取到的值是string两者equal比较永远是false

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月9日
  • 已采纳回答 2月1日
  • 修改了问题 12月26日
  • 创建了问题 12月26日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装