Ir ao conteúdo
  • Cadastre-se
Patrickwilker0

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.

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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:

    }                                                   

 

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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?

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Leonardo0308 Para mim objeto era quando a gente instanciava kkk enfim...valeu

 

Mas sobre a classe, em tenho uma classe com esse nome. 

E tem um jframe com o nome de Administrador 

Compartilhar este post


Link para o post
Compartilhar em outros sites
20 minutos atrás, Patrickwilker0 disse:

tenho uma classe com esse nome

 

E ela tá com os atributos e funções já?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Leonardo0308  Sim, no CadastroAdministrador eu pego a senha que foi inserida no jframe Administrador, ai eu dou um setSenha(senha).

adicionado 0 minutos depois

So que quando eu fecho esse jframe (Administrador) é como se nunca tivesse sido cadastrada

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Leonardo0308 Ainda nao. Pois to na duvida se so coloco no main ou criou uma nova classe.

 

(fora que a funcao cadastrar acho que vou deixar so como mudar senha, mas isso nao interfere muito, so vai ter uma senha como padrão)

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, Patrickwilker0 disse:

Pois to na duvida se so coloco no main ou criou uma nova classe.

 

É para criar uma nova classe. É só seguir o exemplo que o @AdrianoSiqueira passou.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Leonardo0308 então serão serao tres? Da ate para usar herença...

 

Vou tentar fazer do jeito q ele falou

  • Curtir 1

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@AdrianoSiqueira Ah sim, agora to começando a entender....

adicionado 1 minuto depois

Aquele main é da classe CadastroAdministrador?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, o método main fica em uma classe separada, a ideia é que a classe Principal do seu programa não seja uma interface gráfica, nesse caso você deve criar uma nova classe, colocar o método main nela e partir daí você chama as demais janelas.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@AdrianoSiqueira

E se eu criar um public static ArrayList na classe CadastroAdministrador (local onde tem minhas funções e atributos) esse ArrayList vai ser apagado quando eu fechar o jframe?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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...