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 false
Qualquer 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… 
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… 
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 ini
OBS: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 ini
OBS: 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