Ir ao conteúdo
  • Cadastre-se

Java Tela de Login nao salva senha


Posts recomendados

Hey, beleza?

 

Então, estava desenvolvendo um programa e percebi que quando eu faço o cadastro e salvo a senha funciona, mas se eu fechar a tela de cadastro e depois entrar novamente entrar utilizando a senha que acabei de fazer no cadastro não dar certo, pois é como se nao tivesse sido salva. Alguem tem ideia de como resolver isso?

 

RESUMO: acho que no final das contas nao esta sendo salvo, se fechar a aplicação (somente a tela de cadastro) perde tudo.

Link para o comentário
Compartilhar em outros sites

@Leonardo0308

eu nao sei se conseguir ser claro. É que sao varias tela no sistema ne, ai em uma delas é a parte do cadastro. 

Depois que o cadastro é feito a gente fecha aquele jframe e parte para outras funcionalidades. So que quando eu fecho somente aquela janela é como se nao tivesse sido salvo, sendo que o programa como um todo esta aberto. So foi a janela do cadastro que foi fechado e nao o sistema todo

Link para o comentário
Compartilhar em outros sites

@AdrianoSiqueira ok, segue o codigo.

 

O construtor está assim, mas antes so tinha as informações do primeiro if

 

public class Administrador extends javax.swing.JFrame {

    /**
     * Creates new form Administrador
     */
    int cont = 0;
    public Administrador() {
        initComponents();
        
        if (cont == 0) {
            btnNovoCadastrarAdm.setEnabled(true);
            btnCadastrarAdm.setEnabled(false);
            jPasswordSenhaCadastrar.setEnabled(false);
            jPasswordSenhaNovamente.setEnabled(false);

            jPasswordSenhaFinal.setVisible(false);
            labelSenhaNovamente.setVisible(false);
            cont=1;
        } else {
            btnNovoCadastrarAdm.setEnabled(true);
            btnNovoCadastrarAdm.setText("Mudar Senha");
            btnCadastrarAdm.setEnabled(false);
            btnCadastrarAdm.setText("Salvar");
            jPasswordSenhaFinal.setVisible(true);
            labelSenhaNovamente.setVisible(true);
            jPasswordSenhaFinal.setEnabled(false);
            jPasswordSenhaCadastrar.setEnabled(false);
            jPasswordSenhaNovamente.setEnabled(false);
            jPasswordSenhaCadastrar.setText("");
            jPasswordSenhaNovamente.setText("");
            jPasswordSenhaFinal.setText("");
            labelSenhaAntiga.setText("Senha Antiga:");
            labelSenhaNova.setText("Senha Nova:");
            labelSenhaNovamente.setText("Informe novamente:");
            jPanel2.setBorder(BorderFactory.createTitledBorder("Mudar Senha"));
        }

    }

    String senha;

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
       private void btnEntrarAdmActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
        if (jPasswordSenhaLogin.getPassword().equals("")) {
            JOptionPane.showMessageDialog(null, "CAMPO SENHA NÃO PODE FICAR VAZIO");
        } else {
            String senhaLogin = String.valueOf(jPasswordSenhaLogin.getPassword());
            if (senhaLogin.equals(senha)) {
                MenuAdm menu = new MenuAdm();
                menu.setVisible(true);
            } else {
                JOptionPane.showMessageDialog(null, "SENHA INCORRETA");
            }
        }
    }                                            

    private void btnCadastrarAdmActionPerformed(java.awt.event.ActionEvent evt) {                                                
        // TODO add your handling code here:
        CadastroAdministrador adm = new CadastroAdministrador();

        if (jPasswordSenhaCadastrar.getPassword().equals("") || jPasswordSenhaNovamente.getPassword().equals("")) {
            JOptionPane.showMessageDialog(null, "Existe campo em branco");
        } else {
            String senha1 = String.valueOf(jPasswordSenhaCadastrar.getPassword());
            String senha2 = String.valueOf(jPasswordSenhaNovamente.getPassword());
            if (btnNovoCadastrarAdm.getText().equals("Novo")) {
                if (senha1.equals(senha2) == false) {
                    JOptionPane.showMessageDialog(null, "SENHAS DIFERENTES");
                } else {
                    adm.cadastrar(senha1);
                    senha = senha1;
                    JOptionPane.showMessageDialog(null, "CADASTRO REALIZADO COM SUCESSO");
                    btnNovoCadastrarAdm.setEnabled(true);
                    btnNovoCadastrarAdm.setText("Mudar Senha");
                    btnCadastrarAdm.setEnabled(false);
                    btnCadastrarAdm.setText("Salvar");
                    jPasswordSenhaFinal.setVisible(true);
                    labelSenhaNovamente.setVisible(true);
                    jPasswordSenhaFinal.setEnabled(false);
                    jPasswordSenhaCadastrar.setEnabled(false);
                    jPasswordSenhaNovamente.setEnabled(false);
                    jPasswordSenhaCadastrar.setText("");
                    jPasswordSenhaNovamente.setText("");
                    labelSenhaAntiga.setText("Senha Antiga:");
                    labelSenhaNova.setText("Senha Nova:");
                    labelSenhaNovamente.setText("Informe novamente:");
                    jPanel2.setBorder(BorderFactory.createTitledBorder("Mudar Senha"));

                }
            } else {
                senha1 = String.valueOf(jPasswordSenhaCadastrar.getPassword());
                senha2 = String.valueOf(jPasswordSenhaNovamente.getPassword());
                String senha3 = String.valueOf(jPasswordSenhaFinal.getPassword());
                if (senha1.equals(senha) == false) {
                    JOptionPane.showMessageDialog(null, "SENHA ANTIGA INCORRETA");
                } else {
                    if (senha2.equals(senha3) == false) {
                        JOptionPane.showMessageDialog(null, "SENHAS DIFERENTES");
                    } else {
                        adm.cadastrar(senha2);
                        senha = senha2;
                        JOptionPane.showMessageDialog(null, "SENHA MUDADA COM SUCESSO");
                        btnNovoCadastrarAdm.setEnabled(true);
                        btnNovoCadastrarAdm.setText("Mudar Senha");
                        btnCadastrarAdm.setEnabled(false);
                        btnCadastrarAdm.setText("Salvar");
                        jPasswordSenhaFinal.setVisible(true);
                        labelSenhaNovamente.setVisible(true);
                        jPasswordSenhaFinal.setEnabled(false);
                        jPasswordSenhaCadastrar.setEnabled(false);
                        jPasswordSenhaNovamente.setEnabled(false);
                        jPasswordSenhaCadastrar.setText("");
                        jPasswordSenhaNovamente.setText("");
                        jPasswordSenhaFinal.setText("");
                        labelSenhaAntiga.setText("Senha Antiga:");
                        labelSenhaNova.setText("Senha Nova:");
                        labelSenhaNovamente.setText("Informe novamente:");
                        jPanel2.setBorder(BorderFactory.createTitledBorder("Mudar Senha"));
                    }
                }
            }

        }

    }                                               

    private void btnNovoCadastrarAdmActionPerformed(java.awt.event.ActionEvent evt) {                                                    
        // TODO add your handling code here:
        btnNovoCadastrarAdm.setEnabled(false);
        btnCadastrarAdm.setEnabled(true);
        jPasswordSenhaCadastrar.setEnabled(true);
        jPasswordSenhaNovamente.setEnabled(true);
        jPasswordSenhaFinal.setEnabled(true);
        if (btnNovoCadastrarAdm.getText().equals("Mudar Senha")) {
            labelSenhaAntiga.setText("Senha Antiga:");
            labelSenhaNova.setText("Senha Nova:");
            labelSenhaNovamente.setText("Informe novamente:");

        }
    }                                                   

    private void jPasswordSenhaFinalActionPerformed(java.awt.event.ActionEvent evt) {                                                    
        // TODO add your handling code here:

    }                                                   

 

Link para o comentário
Compartilhar em outros sites

A senha está sendo salva dentro da classe CadastroAdministrador, como o objeto dessa classe está sendo criado dentro da classe de Administrador, ele só existe dentro dessa classe, logo quando a interface é fechada toda a informação é destruída.

 

Faça o seguinte: crie o objeto CadastroAdministrador fora da classe de Administrador e passe esse objeto pelo construtor, dessa forma quando a interface for fechada a informação será preservada.

adicionado 20 minutos depois

Eu fiz um pequeno exemplo muito mínimo só para ilustrar:

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Administrador extends JFrame {
    private final CadastroAdministrador cadastroAdministrador;

    public Administrador(CadastroAdministrador cadastroAdministrador) {
        this.cadastroAdministrador = cadastroAdministrador;
    }

    // Chame essa função dentro da ação do botão de cadastrar a senha
    private void cadastrar() {
        String senha = "123";           // Você pega do campo
        boolean status = cadastroAdministrador.cadastrarSenha(senha);

        if (status) {
            JOptionPane.showMessageDialog(null, "Cadastrado com sucesso.");
        } else {
            JOptionPane.showMessageDialog(null, "Erro ao cadastrar.");
        }
    }

    // Chame essa função dentro da ação do botão de alterar a senha
    private void alterarSenha() {
        String senhaAntiga = "123";     // Você pega do campo
        String senhaNova = "123";       // Você pega do campo
        boolean status = cadastroAdministrador.alterarSenha(senhaAntiga, senhaNova);

        if (status) {
            JOptionPane.showMessageDialog(null, "Alterado com sucesso.");
        } else {
            JOptionPane.showMessageDialog(null, "Erro ao alterar.");
        }
    }
}
import java.util.ArrayList;
import java.util.List;

public class CadastroAdministrador {
    private List<String> senhas;

    public CadastroAdministrador() {
        senhas = new ArrayList<>();
    }

    public boolean cadastrarSenha(String senha) {
        if (senhas.contains(senha)) {
            return false;
        } else {
            senhas.add(senha);
            return true;
        }
    }

    public boolean alterarSenha(String senhaAntiga, String senhaNova) {
        if (senhaAntiga.equals(senhaNova)) {
            // As senhas não podem ser iguais
            return false;
        } else if (!senhas.contains(senhaAntiga)) {
            // A senha antiga não existe
            return false;
        } else {
            // Tudo certo
            senhas.remove(senhaAntiga);
            senhas.add(senhaNova);
            return true;
        }
    }
}
public class Principal {
    
    public static void main(String[] args) {
        CadastroAdministrador cadastroAdministrador = new CadastroAdministrador();

        Administrador administrador = new Administrador(cadastroAdministrador);
        administrador.setVisible(true);
    }
}

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@AdrianoSiqueira Acho que entendi.

 

So uma duvida, eu devo criar enão o objeto CadastroAdministrador em outra classe, aqui no caso em tem uma que se chama Executavel (é nela que tem a primeira tela do sistema, e dela que se vai para as outras telas) seria nela entao.?

 

Ou classe main do Administrador?

Link para o comentário
Compartilhar em outros sites

@Patrickwilker0 Eu acho que no caso é para criar uma classe nova chamada CadastroAdministrador como feita feita pelo @AdrianoSiqueira .

 

5 minutos atrás, Patrickwilker0 disse:

eu devo criar enão o objeto CadastroAdministrador em outra classe

 

Só um pequeno detalhe de O.O., classes e objetos teoricamente são a mesma coisa, tirando o fato de que o objeto é a classe que foi instanciada na memoria.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Patrickwilker0, as classes que eu mostrei no exemplo tem os mesmos nomes que as suas de propósito, elas são as suas classes, mas de um jeito super simplificado. A minha ideia era que você adicionasse o código das minhas classes dentro das suas (uma espécie de merge).

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!