Erro ao fechar jFrame

Boa tarde. Sou iniciante no java tenho essa duvida. Tenho uma classe UsuadioDAO a qual faz a verificação do login e um jframe Login. Roda tudo bem agora, mas quando chega na parte de fechar o jFrame login (new FrmLogin().dispose();) não fecha o que poderia ser???

public void logar(UsuarioBean usBean) {
	try {
		String sql = "select * from usuario where apelido=? and senha=?";
		
		PreparedStatement pst = getCon().prepareStatement(sql);
		pst.setString(1, usBean.getApelido());
		pst.setString(2, usBean.getSenha());
		
		ResultSet rs = pst.executeQuery();
		
		if (rs.next()) {
			// nivel de acesso
			//Verifica o campo nivel_acesso
			String nivel = rs.getString(6);
			
			if (nivel.equals("admin")) {
				new FrmLogin().dispose();
				new FrmMain().setVisible(true);
			} else {
				new FrmLogin().dispose();
				new FrmMain().setVisible(true);
			}
		} else {
			FrmLogin.lblInfor.setText("Usuário e/ou Senha Invalido");
			FrmLogin.lblInfor.setForeground(Color.red);
		}
	} catch (SQLException e) {
		JOptionPane.showMessageDialog(null, e);
	}
}

Ao executar: new FrmLogin().dispose();, na verdade você está criando uma outra janela FrmLogin e já fechando em seguida (por conta do new). Caso tenha alguma outra instância de FrmLogin, ela continuará aberta.

Você tem que executar o comando de fechar (dispose) na instância da janela atual e não criar uma nova instância dela.

Obrigado lucastody acabei de fazer a alteração no código funcionou perfeitamente

basicamente modifiquei o código do UsuadioDAO para:

public String logar(UsuarioBean usBean) {
String usuario = null;
try {
String sql = “select * from usuario where apelido=? and senha=?”;
PreparedStatement pst = getCon().prepareStatement(sql);
pst.setString(1, usBean.getApelido());
pst.setString(2, usBean.getSenha());
ResultSet rs = pst.executeQuery();
if (rs.next()) {
String nivel = rs.getString(6);
if (nivel.equals(“admin”)) {
usuario = “admin”;
} else {
usuario = “user”;
}
} else {
FrmLogin.lblInfor.setText(“Usuário e/ou Senha Invalido”);
FrmLogin.lblInfor.setForeground(Color.red);
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e);
}
return usuario;
}

e no meu jFrame login um botão com evento contendo esse código

Connection con;
con = Conexao.conectorMysql();
UsuarioBean ub = new UsuarioBean();
UsuarioDAO ud = new UsuarioDAO(con);
ub.setApelido(txtUsuario.getText());
ub.setSenha(txtSenha.getText());
ud.logar(ub);
String res = ud.logar(ub);
System.out.println(res);
if (null == res) {
lblInfor.setText(“Usuário não existe”);
}else switch (res) {
case “admin”:
dispose();
new FrmMain().setVisible(true);
break;
case “user”:
dispose();
new FrmMain().setVisible(true);
break;
default:
break;
}
con.close();

não sei se está 100% o código mais funcionou perfeitamente