Passar o indice memorizado para o checkBox

Boa tarde pessoal.
Estou fazendo um programa que usa checkBox quando marcado true desmarcado false e que usa get e set que recebe esse valor true or false até ai tudo bem o problema e que eu não sei como fazer o inverso passar o valor do get e set para o checkBox. A intenção é que quando eu encerrar o programa com o checkBox marcado e rodar ele novamente ele continuar marcado se encerrar desmarcado continuar desmarcado assim sucessivamente. Como fazer?

boolean caixaSelecionada = configuracao.isExibirColuna(); // recebe o valor armazenado pelo método get tipo booleano, por exemplo, true. if (exibirColunaDeSenhas.isSelected()) { // esse trecho tem que receber o valor armazenado pela última vez mas, deve continuar funcionando com clique do mouse. caixaSelecionada = true; } else { caixaSelecionada = false; } configuracao.setExibirColuna(caixaSelecionada); // depois envia o valor para o set se estiver desmarcado quando o programa iniciar de novo o valor da caixaSelecionada linha 1 deve ser falseQualquer dica ajuda.

Para isso você terá que salvar em um arquivo ou até mesmo em um banco de dados.

Como você irá fechar a aplicação, todo o conteúdo que estava na memória será perdido…

Abraços

Eu sei que a explicação ficou meio confusa mas vou tentar explicar melhor:
Eu fiz um menu de opções nele têm vários jcheckbox que o usuário marca para habilitar ou desabilitar alguma funcionalidade essa informação boleana é gravada em um arquivo de parâmetros de configuração (config.ini) até aí tudo bem mas eu não sei o que fazer para recuperar esse valor, por exemplo, o usuário marcou a checkbox não mostrar a coluna, ou seja, o valor fica false no config.ini depois o programa é encerrado quando ligar de novo a caixa deveria ficar marcada eu consigo fazer ele ler o config.ini mas não consigo atribuir isso dentro do if (isSelected?). Como fazer?

Segue a classe ConfiguracoesDAO:

[code]public class ConfiguracoesDAO {
private Configuracoes configuracao;

// construtor referencia o objeto da memória criada na classe Opcoes
public ConfiguracoesDAO(Configuracoes configuracao){
    this.configuracao = configuracao;
}

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()));
}

}[/code]Quando o arquivo ini é lido ele seta para:[code]public class Configuracoes {
private boolean exibirColunaDeSenhas;

public Configuracoes(){

}

public boolean isExibirColuna(){
    return exibirColunaDeSenhas;
}

public void setExibirColuna(boolean booleano){
    this.exibirColunaDeSenhas = booleano;
}

}[/code]Aqui ele recebe o valor pelo get mas não sei onde atribui o valor para tornar o checkbox para isSelected: boolean caixaSelecionada = configuracao.isExibirColuna(); // recebe o valor armazenado if (exibirColunaDeSenhas.isSelected()) { // eu preciso atribuir esse valor aqui assim a caixa fica marcada novamente caixaSelecionada = true; } else { caixaSelecionada = false; } configuracao.setExibirColuna(caixaSelecionada);

[quote=Gleidson Henrique]Para isso você terá que salvar em um arquivo ou até mesmo em um banco de dados.

Como você irá fechar a aplicação, todo o conteúdo que estava na memória será perdido…

Abraços[/quote]Eu estou salvando em parâmetros de configuração extensão ini essa informação está sempre disponível só não sei passar ela de volta para o checkbox.

Tentei fazer isso mas também não deu certo. boolean caixaSelecionada = configuracao.isExibirColuna(); // recebe o valor armazenado if (configuracao.isExibirColuna() == true) { exibirColunaDeSenhas.enable(); } else { exibirColunaDeSenhas.disable(); } if (exibirColunaDeSenhas.isSelected()) { caixaSelecionada = true; } else { caixaSelecionada = false; } configuracao.setExibirColuna(caixaSelecionada);

Porque de ao invés de trabalhar com um arquivo de texto, porque não trabalha com XML.

Com XML, você poderá criar um Bean e acessar as informações do XML através desse Bean.

Arquivos de textos, iguais você está fazendo, você terá que percorrer linha a linha e verificar em qual você irá setar a configuração do JCheckBox…

Dê uma pesquisa em XStream. Na minha opiniao, é bem fácil de usar. Tem até uns exemplos no site… :slight_smile:

Abraços

[quote=Gleidson Henrique]Porque de ao invés de trabalhar com um arquivo de texto, porque não trabalha com XML.

Com XML, você poderá criar um Bean e acessar as informações do XML através desse Bean.

Arquivos de textos, iguais você está fazendo, você terá que percorrer linha a linha e verificar em qual você irá setar a configuração do JCheckBox…

Dê uma pesquisa em XStream. Na minha opiniao, é bem fácil de usar. Tem até uns exemplos no site… :slight_smile:

Abraços[/quote]
Bem lembrado você pode até achar estranho mais eu já estou usando XSTream. Eu uso XSTream para cadastro nome, senha, etc… ainda não sei usar o banco de dados por isso fiz assim.
Só que para os itens do menu de opções eu optei por usar parâmetros de configuração por questão de aprendizado.

Mas o problema não é a comunicação com os dados eu consigo recuperar esses valores o fato é que eu não consigo fazer esse valor influenciar, por assim dizer, o checkbox.
Por exemplo: eu marco a caixa e grava true quando eu recupero está true (graças ao outro tópico) só que depois que encerro e reativo o programa o checkbox “não” está isSelected == disable e “deveria” estar isSelected == enable porque no ini está true.

O problema está nesse trecho todo o resto é só para mostrar como os dados serão tratados. Descrevi minha lógica nos comentários de como deveria ser porque não funciona.

boolean caixaSelecionada = configuracao.isExibirColuna(); // recebe o valor armazenado no ini if (configuracao.isExibirColuna() == true) { // se a variavel caixaSeleciona for true exibirColunaDeSenhas.enable(); // jcheckbox exibirColunaDeSenhas fica marcado } else { exibirColunaDeSenhas.disable(); } if (exibirColunaDeSenhas.isSelected()) { // se esta marcado na swing checkbox aparece habilitado caixaSelecionada = true; // ainda esta marcado porque o usuario nao clicou } else { caixaSelecionada = false; } configuracao.setExibirColuna(caixaSelecionada); // o usuario nao desmarcou portanto envia esse valor de volta para o iniOBS:Esqueci de mencionar o tipo: private javax.swing.JCheckBox exibirColunaDeSenhas;

Que confusão kkkkkk

Enfim, pra voce setar como selecionado ou nao, utilize o metodo setSelected do JCheckBox… Já tentou fazer isso?

Abraços

Tentei mas ainda não deu certo o código está assim:

boolean caixaSelecionada = configuracao.isSalvarNoDiretorioPadrao(); // pega as informações do ini ex: true if (configuracao.isSalvarNoDiretorioPadrao() == true || salvarNoDiretorioPadrao.isSelected() == true) { // se o arquivo ini for true ou checkbox estiver selecionado pelo usuario salvarNoDiretorioPadrao.setSelected(true); // checkbox continua marcado caixaSelecionada = true; // variavel booleana a ser regravada no ini System.out.println("marcado"); // só para teste } else { salvarNoDiretorioPadrao.setSelected(false); caixaSelecionada = false; System.out.println("desmarcado"); } configuracao.setSalvarNoDiretorioPadrao(caixaSelecionada); // envia para o intermediário que vai gravar no iniOBS: Agora o checkBox é o salvarNoDiretorioPadrao, mudei de checkbox para não atrapalhar um outro código.
Você pode dar um exemplo é a primeira vez que uso checkBox e estou só na tentativa e erro. Cansa demais.

De nome mais significativos aos seus campos. Por exemplo, um JTextField, utilize txt_NomeDoCampo. Isso ajuda depois a saber o tipo do campo e sobre o que ele é…

salvarNoDiretorioPadrao não é um bom nome, pois todos os outros tambem irão salvar, correto?

Sobre sua logica, tenho uma dica também.

if (configuracao.isSalvarNoDiretorioPadrao() == true || salvarNoDiretorioPadrao.isSelected() == true)

Esses == true não é necessário. Já viu sobre tabela da verdade? ‘E’ e ‘OU’? Pois então, ambos os metodos já retornam um true ou false. O correto seria:

if (configuracao.isSalvarNoDiretorioPadrao() || salvarNoDiretorioPadrao.isSelected() )

Sobre os metodos setSelect, está certo. Não está funcionando? Qual parte que não funciona? Ele não seta o valor do JCheckBox?

Abraços