在主页面中注销当前账号后重新登陆,我想重新建立一个子窗口,但出来的是上一个窗口,我该怎么解决这个问题
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);
}
}
});
}
}
这两次事件我希望都建立的是新的窗口,但都这是打开了之前的窗口,希望各位朋友帮我看看
您好,建议在注销当前账号后,先将上一个窗口关闭,然后再建立一个新的子窗口。可以参考以下示例代码:
// 关闭上一个子窗口(假设上一个子窗口为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对象,这样可以避免出现各种不必要的问题。