首页 > 解决方案 > 打开两个新的 JFrame!为什么会这样?

问题描述

此代码检查用户名和密码,如果它们正确,则打开一个新的 JFrame。但是,打开了两个相同的 JFrame,我不知道原因。

public void checkLogin(String x, String y){
        if (x.equals(loginCredentials[0]) && y.equals(loginCredentials[1])){
            dispose();
            task1ExampleSC o2 = new task1ExampleSC();
            o2.setVisible(true);
            o2.setSize(600,650);
            o2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }else{
            System.exit(0);
        }
    }
    private class loginAC implements ActionListener{
        public void actionPerformed(ActionEvent e){
            String usernameText,passwordText;
            if (e.getSource()==login){
                usernameText = username.getText();
                passwordText = password.getText();
                checkLogin(usernameText,passwordText);
            }else if(e.getSource()==cancel){
                System.exit(0);
            }
        }
    }

标签: javaswingjframe

解决方案


您没有展示如何将侦听器添加到按钮,但大概您有这样的事情:

login.addActionListener(new loginAC());

此行是否在您的代码中多次出现?或者这条线有可能不止一次运行?如果是这样,登录按钮将添加多个监听器,这意味着ActionEvent单击登录按钮时将调度多个侦听器;如果用户名和密码都正确,那将导致打开一个以上的新窗口。


推荐阅读