Duvida como setar uma flag atraves do jcheckbox

4 respostas
G

Tenho uma classe em q preciso setar uma flag apartir de qual checkbox foi selecionado, segue o codigo do metodo:

public void defineSelecionado(){
        if(check1.isSelected()){

            i.setFlag(1);
        }if(check2.isSelected()){
            i.setFlag(2);
        }if(check3.isSelected()){  
            i.setFlag(3);
        }

preciso setar isso numa classe bean:

private int flag;

 public int getFlag() {
        return flag;
    }

    /**
     * @param flagExterna the flagExterna to set
     */
    public void setFlag(int flag) {
        this.flagExterna = flag;
    }

Mais o problema é que, quando eu selecionar mais de um checkbox, como q eu faço pra ele retornar os 3 valores por exemplo se eu selecionar os 3??

4 Respostas

drsmachado

Peraí, o objetivo é permitir que apenas um seja marcado ou que todos sejam selecionados?
Caso apenas um, não há o que fazer, agora, caso seja para que todos os valores sejam considerados, o ideal é implementar em cada JCheckBox um método que faça essa ação, setar a flag…

R

ou vc utiliza array de inteiros;[1, 2, 3]
ou vc utiliza uma soma tipo : se soma = 6, os tres foram selecionados;
ou vc utiliza uma String separando por virgulas = “1,2,3”

//exemplo com array int, digo novamente só um exemplo, vc tem várias maneiras de fazer isto ai
public int[] retornaSelecionados(){
     int[] retorno = [0,0,0]; //
     if(check1.isSelected()){  
           retorno[0] = 1;
     }if(check2.isSelected()){  
           retorno[1] = 2;
     }if(check3.isSelected()){    
           retorno[2] = 3; 
     }
}

não ficou muito bonito não, mas … é uma dica ok. :slight_smile:

G

vlw, obrigado, resolvi o problema do jeito que o rjbcordeiro falou.

ViniGodoy

Uma alternativa muito comum entre o pessoal de linguagens mais antigas, como o C e o C++, é usar mapas de bits:
http://www.guj.com.br/posts/list/207435.java#1053869

Isso permite guardar todos os valores num inteiro, sem recorrer a arrays.

Uma alternativa mais OO e typesafe é fazer um enum.

Criado 16 de novembro de 2010
Ultima resposta 16 de nov. de 2010
Respostas 4
Participantes 4