Melhor maneira de verificar o status de vários CheckBoxs

5 respostas
matheusssilva

Bem gente é o seguinte, em minha aplicação eu tenho vários CheckBoxs o status deles eu estou salvando através de um arquivo properties.

Quando a aplicação é aberta novamente ele verifica no arquivo properties quais foram marcados e remarca com setSelected(true) deixando do geito que estava. Mais abaixo no programa existe uma rotina que executa operações baseando-se nos CheckBoxs marcados para verificar quais estam marcados eu estou fazendo um sequencia grande de teste de IF,

if(chkCodigo.getState() == true){
            elementosBD.add("pess_codigo");
            labelCol.add("Código");
        }
        if(chkNome.getState() == true){
            elementosBD.add("pess_nome");
            labelCol.add("Nome");
        }
        if(chkEndereco.getState() == true){
            elementosBD.add("pess_endereco");
            labelCol.add("Endereço");
        }
        if(chkCidade.getState() == true){
            elementosBD.add("cid_nome");
            labelCol.add("Cidade");
        }
        if(chkBairro.getState() == true){
            elementosBD.add("bai_nome");
            labelCol.add("Bairro");
        }
        if(chkTel.getState() == true){
            elementosBD.add("pess_tel");
            labelCol.add("Telefone");
        }
        if(chkCel.getState() == true){
            elementosBD.add("pess_cel");
            labelCol.add("Celular");
        }
        if(chkEmail.getState() == true){
            elementosBD.add("pess_email");
            labelCol.add("Email");
        }

e olha que eu não coloquei tudo aqui.

Bem o que eu quero é saber se existe uma alternativa melhor de verificar o status desses CheckBoxs sem ter que colocar esse monte de teste de IF. Ou uma maneira de detectar quando um CheckBox foi setado como true e execute uma ação, será que não existe um tipo de listener que monitore alguma mudança no status do componente?

5 Respostas

matheusssilva

pow! alguém?

Aff, já vi problemas bem mais complexos que esse terem solução, será que esse problema simples não tem uma solução mais elegante que essa de ficar usando if.

Guilherme_Gomes

Dando uma olhada rapida no seu codigo, e sem saber o contexto dele… as soluções que consigo imaginar são:

  1. Criar uma lista com todos os checkboxes e fazer esses comandos dentro de um for.
  2. Usar reflection para iterar nos atributos da classe que contém esses checkboxes e, se esse atributo for um checkbox, faz a conferencia.

Agora, se essas soluções não o satisfizerem, mostra mais o contexto desse seu código e explique melhor o que isso envolve.

Felagund

Pelo menos algo mais simples não.

Não vejo a nessessidade desse getState(), use o isSelected()

public void ajustaCheckBox(JCheckBox check, String s1, String s2){//use nomes mais intuitidos aqui nessas strings
   if(check.isSelected()){
 elementosBD.add(s1);  
     labelCol.add(s2);  
}
}


ajustaCheckBox(chkCodigo, "pess_codigo", "Codigo");

quem sabe criar seu proprio JCheckBox com essas opções, ai se torne mais facil.

[]'s

lina

Oi,

Apenas uma dica: Não utilize == true para métodos que retornarem um conteudo booleano.

if(chkCodigo.getState() == true){ elementosBD.add("pess_codigo"); labelCol.add("Código"); }
Faz assim:

if(chkCodigo.getState()){ elementosBD.add("pess_codigo"); labelCol.add("Código"); }

Tchauzin!

matheusssilva

valeu gente, useu a dica do Felagund, eu queria poder fazer sem ter que usar teste de IF mas pelo visto acho que não tem como, mas pelomenos eu diminui a quantidade de linhas criando um método para fazer isso.

Criado 16 de julho de 2009
Ultima resposta 17 de jul. de 2009
Respostas 5
Participantes 4