Como não matar o processo/classe ao fechar um Jframe?

5 respostas
F_ix1

Olá a todos, estou com esse pequeno problema e não consigo ver uma boa solução

Vou colocar uma imagem para vocês entenderem melhor

a tela inicial do meu programa é essa

[img]http://img826.imageshack.us/img826/7597/semttulomgp.png[/img]

um jframe prinicipal (ao fundo) que chama esse "pop up" ao iniciar para pedir login e senha.

ambos usam uma classe para se conectar ao banco de dados sql e assim fazem suas operações

ao clicar no botão "Logar" ele verifica os dados e da um setvisible(false) no "pop up" e libera o programa que está atras

segue o codigo do botão LOGAR

String login,senha;
//captura os dados
        login = jt_login.getText();
        senha = jp_senha.getText();
//testa o banco
        banco.conecta();
//verifica se os dados digitados batem com os do banco de dados
        if(banco.VerificaCadastro(login, senha)){            
//salva o login e senha digitados, caso forem corretos ja que o VerificaCadastro retorna um false ou true, assim saberei com qual login a pessoa utilizou para se conectar!
            banco.Capturei(login, senha);
//"fecha" o pop up
            setVisible(false);
            
        }
        else {
            System.out.print("Retornou false");
        }

ps: banco é minha classe do banco de dados
ps2: verificaCadastro como o nome diz faz a verificação no banco
ps3: banco.Capturei(login, senha) exporta para a classe banco o login e senha digitado.
ps4: tanto nesse pop up de login e no programa ao fundo eu tenho criado uma instancia da classe Banco (ja que não faço ideia de como utilizar só um nos 2 Jframe)

infelizmente na minha função "Capturei" da classe banco os dados não persistem quando eu do um setVisible(false); é como se a classe fosse resetada

segue a classe que só faz isso;

public void Capturei(String login, String senha){
        plogin = login;
        psenha = senha;

plogin e psenha são strings globais da classe Banco

resumindo meu problema

tenho 2 jframes, e uma classe utilizada pelos dois

gostaria de saber como faço para fechar um jframe que introduziu uma informação nessa classe sem que o processo seja morto

5 Respostas

J

Eu fiz uma tela de login funcionar assim: na minha classe principal, eu crio uma instancia da minha classe de login, quando o usuário faz o login, se estiver correto, eu instancio minha classe com a tela principal do sistema, dou um .showVisible(true) minha classe da tela principal e depois um .dispose() na minha classe de login.
Pra você ver melhor:

Minha classe principal

public static void main(String[] args){
            TelaLogin tela = new TelaLogin();
            tela.setVisible(true);
    }

O método que uso pra fechar a tela de login e chamar a tela principal:

TelaPrincipal telaPrincipal = new TelaPrincipal(usuario, permissao);
telaPrincipal.setVisible(true);
TelaLogin.this.dispose();
F_ix1

Opa brother obrigado pela ajuda!!

eu também consegui uma solução parecida transferindo o metodo para a jframe de login

S

F?ix~*:
ps4: tanto nesse pop up de login e no programa ao fundo eu tenho criado uma instancia da classe Banco (ja que não faço ideia de como utilizar só um nos 2 Jframe)

infelizmente na minha função “Capturei” da classe banco os dados não persistem quando eu do um setVisible(false); é como se a classe fosse resetada

Se você criou duas instâncias de Banco e usou uma das duas na janela de login, a outra não terá os valores modificados. Quando fechar a janela de login e partir para a outra janela com a outra instância, esta terá os valores definidos na instanciação.

F_ix1

silasyudi:
F?ix~*:
ps4: tanto nesse pop up de login e no programa ao fundo eu tenho criado uma instancia da classe Banco (ja que não faço ideia de como utilizar só um nos 2 Jframe)

infelizmente na minha função “Capturei” da classe banco os dados não persistem quando eu do um setVisible(false); é como se a classe fosse resetada

Se você criou duas instâncias de Banco e usou uma das duas na janela de login, a outra não terá os valores modificados. Quando fechar a janela de login e partir para a outra janela com a outra instância, esta terá os valores definidos na instanciação.

Foi essa exata conclusão que tive após conseguir sanar o problema, não tinha ideia de como mandar a instancia da classe para esse outro JFRAME sem ter que criar um novo! contornei bem na “gambiarra”

J

Sugestão: caso o login e a senha não mudem durante a execução e seja somente UMA instância, pode-se guardar em variáveis estáticas (static) :slight_smile:

Criado 19 de maio de 2013
Ultima resposta 29 de mai. de 2013
Respostas 5
Participantes 4