Erro ao fechar jFrame

2 respostas Resolvido
java
U

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);
	}
}

2 Respostas

Lucas_Camara
Solucao aceita

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.

U

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

Criado 19 de novembro de 2017
Ultima resposta 20 de nov. de 2017
Respostas 2
Participantes 2