swing中主窗口和子窗口的建立问题

在主页面中注销当前账号后重新登陆,我想重新建立一个子窗口,但出来的是上一个窗口,我该怎么解决这个问题

public class Landing {
...............................
       public   void init() throws SQLException {
.............................................
            okButton.addActionListener(new ActionListener() {   //这是登录界面的确定按钮,打开主页面
            @Override
            public void actionPerformed(ActionEvent e) {
                String url = "jdbc:sqlserver://DESKTOP-5OVLRDT:1433;DatabaseName=HotelInfoDataBase;Encrypt=False";
                String username = "sa";
                String password = "123456";
                String Aname = accountText.getText();
                String Amima = passwordText.getText();
                try {
                    Connection conn = DriverManager.getConnection(url, username, password);
                    String sql = "select * from AdminInfo where Aname = ? and Amima = ?";
                    PreparedStatement pstm = conn.prepareStatement(sql);
                    pstm.setString(1, Aname);
                    pstm.setString(2, Amima);
                    ResultSet rs = pstm.executeQuery();
                    if (rs.next()) {
                        jf.dispose();
                        new MainPage().init();
                    } else {
                        String text = "请输入正确的账号或密码";
                        JOptionPane.showMessageDialog(jf, text, "账号不存在", JOptionPane.WARNING_MESSAGE);
                    }
                    rs.close();
                    pstm.close();
                    conn.close();
                } catch (SQLException ex) {
                    throw new RuntimeException(ex);
                }
            }
        });
......................................................
        public static void main(String[] args) throws SQLException {
                new Landing().init();

        }
   }
}
.................................................................
public class MainPage {
................................................
     public void init() throws SQLException {
..................................................
     logoutBtn.addActionListener(new ActionListener() {        //这是主页面的注销按钮,打开登录界面
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    jf.dispose();

                    new Landing().init();

                } catch (SQLException ex) {
                    throw new RuntimeException(ex);
                }
            }
        });
     }
}

这两次事件我希望都建立的是新的窗口,但都这是打开了之前的窗口,希望各位朋友帮我看看

以下内容部分参考ChatGPT模型:


您好,建议在注销当前账号后,先将上一个窗口关闭,然后再建立一个新的子窗口。可以参考以下示例代码:

// 关闭上一个子窗口(假设上一个子窗口为frame)
frame.dispose();

// 建立新的子窗口
JFrame newFrame = new JFrame("新窗口");
newFrame.setSize(500, 500); // 设置窗口大小
newFrame.setLocationRelativeTo(null); // 窗口居中显示
newFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗口时退出程序
newFrame.setVisible(true); // 显示窗口

另外,建议在新建子窗口时,使用新的JFrame对象,而不是直接修改原有的JFrame对象,这样可以避免出现各种不必要的问题。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快