Dúvidas com CheckBoxes

6 respostas
M

Olá, estou recém começando a entender o universo Java, portanto, não faço idéia se a minha pergunta é complexa, ou de simples solução.
Preciso fazer um programa de demonstração, onde devem ser apresentadas opções de estilos de música ao usuário, e o mesmo deve selecionar os que lhe agradam.
Para fazer isso, estou criando CheckBoxes e buscando os nomes dos estilos (Rock, Pop, Blues, etc…) no Banco de dados.
Quem já respondeu uma daquelas pesquisas de internet onde tem coisas como: “Selecione suas áreas de interesse”, sabe do que estou falando. :slight_smile:
Meu problema é o seguinte:
Tenho 54 estilos para o usuário escolher, e na hora de criar as checkBoxes estou usando sempre o mesmo objeto para criar cada umas das 54 checkboxes. Até ai tudo bem, o programa cria as mesmas com facilidade. Porém, na hora de implementar um listener para retornar quais as opções marcadas, eu tenho problemas. Isso pq na teoria, cada vez q eu clicasse em um checkbox, o programa deveria pegar o nome do checkbox e gerar um insert na tabela de preferências do usuário, baseado na opção clicada; mas não tenho como retornar o valor daquela checkbox pq todas elas foram desenhadas baseadas no mesmo objeto.
Minha pergunta é:
Tenho como criar um evento para fazer o que me proponho utilizando apenas esse único objeto de checkBox, ou vou ter q instanciar 54 checkBoxes diferentes?
Obrigado pela ajuda!

6 Respostas

T

http://java.sun.com/docs/books/tutorial/uiswing/components/button.html#checkbox lhe ensina como tratar várias checkboxes com um único ItemListener.

M

Já li este tutorial. O problema é que nele, o programador usou 4 objetos diferentes para as checkBoxes… e é essa a minha dúvida… estou usando um.
Não queria instanciar 54 checkboxes que vão usar o mesmo método no evento de clique… é essa minha dúvida… não há maneira de contornar isto?

T

Você pode criar um array de 54 checkboxes. Não é preciso criar 54 variáveis diferentes.

Estranho - se você fizer isso, não vai ficar apenas uma checkbox na tela?

M

Pois é… meu professor me ensinou a jogar objetos Swing na tela desta forma:

resultado = checkBoxes.executaSelect(comando);

if (resultado.first())

{

while (!resultado.isAfterLast())

{

estilo = resultado.getString(1);

[color=red]jCb = new JCheckBox(); //este é o objeto pra gerar as checkBoxes

jCb.setName(estilo);

jCb.setText(estilo);

jCb.setBounds(x+(j<em>150), y+(i</em>20), 150, 20);[/color]

this.add(jCb);

System.out.println(estilo);

i++;

if (i == limite){

i = 0;

j++;

}

resultado.next();

}

é assim que eu estou fazendo para colocar todas as CheckBoxes na tela…
Funciona pra “pinta-las”, mas não para usa-las com eventos independentes…
Se tiver outra solução, aceito sujestões! hehehe :wink:
esyou bem perdido…
Já tentei colocar um array tb, mas erro de NullPointerSeiláoque… devo ter feito errado…
:confused:

T

Você está criando 54 (que seja) checkboxes nesse loop, se houver 54 linhas nesse banco de dados. Você pode então pegar (com getName() ou getText()) o nome do estilo, no ItemListener que você associar (você precisa associar DENTRO do loop, não for dele.

M

Vou tentar!
Muito obrigado! :slight_smile:

Criado 2 de outubro de 2008
Ultima resposta 2 de out. de 2008
Respostas 6
Participantes 2