Não consigo fechar a janel SWING com dispose

3 respostas
AlencarCanton

E ae galera, segue o código:

package Interface;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Login extends JFrame {
private JPasswordField pfSenha;
private JButton btOK, btCancelar;

public Login() {
setTitle("Login");
setSize(250,80);
setLocationRelativeTo(null);

JLabel lSenha = new JLabel(" Digite sua senha");
pfSenha = new JPasswordField();
pfSenha.setEchoChar('*');
btOK = new JButton("OK");
btCancelar = new JButton("Cancelar");

Container c = this.getContentPane();
c.setLayout(new GridLayout(2,2));
c.add(lSenha);
c.add(pfSenha);
c.add(btOK);
c.add(btCancelar);

TratEventos trat = new TratEventos();
btOK.addActionListener(trat);
btCancelar.addActionListener(trat);
}

public void fechar(){
    this.dispose();
}

class TratEventos implements ActionListener{
public void actionPerformed (ActionEvent ev){
if (ev.getActionCommand() == "OK") {
String senha = String.valueOf(pfSenha.getPassword());
if (senha.compareTo("1234")==0) {
JOptionPane.showMessageDialog(null,"Senha Aceita!!");
new  Principal().setVisible(true);
}
else {
JOptionPane.showMessageDialog(null,"Senha Inválida!\nO programa será finalizado!");
System.exit(0);
}
}
else System.exit(0);
}
}

}

então,está funcionando só q quando a autenticação eh feita com sucesso a tela principal se abre mas a tela de login continua lá,
é nessa parte do código:

if (senha.compareTo("1234")==0) {
JOptionPane.showMessageDialog(null,"Senha Aceita!!");
new  Principal().setVisible(true);
}
mas não consigo usar o Dispose pq n sei qual objeto referenciar,achei q seria esse "c"
Container c = this.getContentPane();

mas não é..tentei fazer com que todo o código ficasse apenas na classe Login,assim eu poderia usar o "this." mas tb n consegui,
alguem pode me ajudar?

3 Respostas

lokidarkeden

faça o setVisible(false) na tela de login depois mande o dispose().

AlencarCanton

mas n sei qual objeto referenciar para usar o “.setvisible(false)”
um objeto dessa classe “Login” é criado na classe main,mas n adianta dar o setvisible la…
como faco?

lokidarkeden
public void fechar(){

this.setVisible(false);

this.dispose();

}
Criado 2 de maio de 2011
Ultima resposta 2 de mai. de 2011
Respostas 3
Participantes 2