Dúvida com uma logica com ifs

1 resposta
F

Olá pessoal, bom dia… estou com um problema com uma lógica de programação.
Eu estou tentanto fazer uma telinha com um menu, que quando o usuario clica uma vez e coloca um icone, e se o usuario clica de novo eu mudo esse icone e se clicar de novo volta para o primeiro e assim por diante, tentei fazer a lógica com um operador boleano, mais nao funcionou, tentei fazer assim, ate da certo a primeira vez, mais depois nao funciona mais. Alguem pode me ajudar? Segue meu evento.:

private void menuCadastro_AlunoActionPerformed(java.awt.event.ActionEvent evt) {
        boolean liberacao = false;
        if(!liberacao){
            liberacao = true;
            menuCadastro_Aluno.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/erp/icones/restricao/sim.png")));
        } else if(liberacao){
            liberacao = false;
            menuCadastro_Aluno.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/erp/icones/restricao/nao.png")));
        }
    }

Onde está meu erro nesse código?
Obrigada!

1 Resposta

di.magdaleno

A sua variável liberacao está sendo declarada dentro do método, portanto, toda vez que o método for executado ele redeclara ela como false independentemente de ser a primeira ou segunda vez que você está clicando no botão.

Declara essa variável como um campo (variável de instância ou estática de classe) que deve resolver seu problema.

Exemplo declarando como uma variável de instância:

private boolean liberacao = false; private void menuCadastro_AlunoActionPerformed(java.awt.event.ActionEvent evt) { if(!this.liberacao){ this.liberacao = true; menuCadastro_Aluno.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/erp/icones/restricao/sim.png"))); } else { this.liberacao = false; menuCadastro_Aluno.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/erp/icones/restricao/nao.png"))); } }

Criado 19 de maio de 2013
Ultima resposta 19 de mai. de 2013
Respostas 1
Participantes 2