Ir ao conteúdo

Posts recomendados

Postado

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.

Postado

@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

Postado

@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:

    }                                                   

 

Postado

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
Postado

@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?

Postado

@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
Postado

@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

Postado

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

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...