[RESOLVIDO] Valor da varíavel some com programa em execução

3 respostas
Onimatsu

Boa tarde rapaziada.
Eu comecei esse código controlando os valores jcheckbox true or false na classe Opcoes essa por sua vez passa o valor boleano para a classe Configuracoes só que por algum motivo quando a classe ConfiguracaoDAO pede os valores de Configuracoes o valor fica false, ou seja, nulo se perde mas ai que surge a dúvida se o programa não foi encerrado o valor da variável exibirColunaDeSenhas da classe Configuracoes não deveria estar na memória?

classe Opcoes -> método do checkBox // ex: eu seleciono o checkBox valor = true é enviado para Configuracoes com valor true
private void exibirColunaDeSenhasActionPerformed(java.awt.event.ActionEvent evt) {                                                     
        boolean caixaSelecionada = configuracao.isExibirColuna(); // recebe o valor armazenado da classe Configuracoes
        if (exibirColunaDeSenhas.isSelected()) {
            caixaSelecionada = true;
        } else {
            caixaSelecionada = false;
        }
        configuracao.setExibirColuna(caixaSelecionada);
    }
classe Configuracoes // o valor true consegue entrar aqui
public class Configuracoes {
    private boolean exibirColunaDeSenhas;

    public Configuracoes(){

    }

    public boolean isExibirColuna(){
        return exibirColunaDeSenhas;
    }

    public void setExibirColuna(boolean booleano){
        this.exibirColunaDeSenhas = booleano;
    }
}
classe ConfiguracaoDAO // o método gravarINI é chamado toda vez que eu aperto o botão salvar no menu de Opcoes // PROBLEMA: quando esse método pega o valor de Configuracoes está false e grava false mesmo valor de quando começou
public class ConfiguracoesDAO {

    private Configuracoes configuracao = new Configuracoes();
    private IniFiles ini = new IniFiles("src\\backup\\config.ini");

    public void lerINI() {
        configuracao.setExibirColuna(Boolean.parseBoolean(ini.getString("CheckBox", "NaoExibirColuna")));
    }

    public void gravarINI() {
        ini.setString("CheckBox", "NaoExibirColuna", String.valueOf(configuracao.isExibirColuna()));
    }
}

3 Respostas

Gleidson_Henrique

Estranho seria se ele retorna-se true hehe

public class ConfiguracoesDAO {  
  
    private Configuracoes configuracao = new Configuracoes(); //Quando voce faz isso, ele nao pega as mesmas informações que foi passada na outra classe
    private IniFiles ini = new IniFiles("src\\backup\\config.ini");  
  
    public void lerINI() {  
        configuracao.setExibirColuna(Boolean.parseBoolean(ini.getString("CheckBox", "NaoExibirColuna")));  
    }  
  
    public void gravarINI() {  
        ini.setString("CheckBox", "NaoExibirColuna", String.valueOf(configuracao.isExibirColuna())); //Por isso que aqui ele puxa false
    }  
}

O que voce poderia fazer é tentar referenciar o mesmo objeto na memoria que você tinha criado anteriormente, então o valor estaria como foi setado lá.

Abraços

Onimatsu

Nossa valeu XD.
Só precisava fazer os construtores na classe Opcoes:

public Opcoes() { initComponents(); configuracao = new Configuracoes(); configuracaoDAO = new ConfiguracoesDAO(configuracao); }E em ConfiguracoesDAO public ConfiguracoesDAO(Configuracoes configuracao){ this.configuracao = configuracao; }Sem querer abusar da boa vontade você pode me ajudar só em mais um outro tópico o assunto é relacionado http://www.guj.com.br/java/284506-memorizar-indice
Nesse eu estou tentando recuperar o valor do ini de forma que o checkBox fique marcado quando eu iniciar a aplicação.

Gleidson_Henrique

De nada amigo… bora pro outro tópico então :slight_smile:

Abraços

Criado 13 de outubro de 2012
Ultima resposta 13 de out. de 2012
Respostas 3
Participantes 2