Bom dia, tudo bem ?
Em determinada tela de um sistema meu tenho mais ou menos 50 JCheckBox, que determinada hora tenho que verificar todos, se estão habilitados ou não, checados ou não.
Minha divida é a seguinte. Tem algum forma de eu iterar sobre esses componentes, utilizando um for, por exemplo ou eu preciso realmente fazer o uso de IFs ?
Se alguem puder ajudar em agradeço.
JComponent comps[] = panel.getComponents();
Voce pode iterar sobre esses campos, e no caso de ser um Container voce pode até pegar os Components dele e ir “varrendo” todos os campos.
Voce não acha que talvez seja melhor outra solução do que ter 50 JCheckBox na tela?
Ou então um modo como mapear esses componentes com seu objeto diretamente?
Uma outra opção seria você mesmo criar a sua lista de JCheckBoxes:
List<JCheckBox> checks = new ArrayList<JCheckBox>();
Se seus checks também estão sendo criados dinamicamente, essa pode ser uma boa opção. Além da lista só conter os componentes relevantes, evita casts e instanceof.
O caso é o seguinte, esses JCheckBox, imitam a arcada dentária, então, cada dente é representado por um JCheckBox. Não pensei em nada que fosse mais vantajoso pra mim e ao mesmo tempo facil e intuitivo pro usuário.
[quote=ViniGodoy]Uma outra opção seria você mesmo criar a sua lista de JCheckBoxes:
List<JCheckBox> checks = new ArrayList<JCheckBox>();
Se seus checks também estão sendo criados dinamicamente, essa pode ser uma boa opção. Além da lista só conter os componentes relevantes, evita casts e instanceof.[/quote]
No meu caso, os Checks são estáticos, fixos na tela.
Nada te impede de coloca-los na lista, até facilita seu trabalho mesmo.
Ta ok, valeu pela ajuda, vou testar, qualquer coisa peço mais ajuda
Valeu!!
Mas por que ao invés de iterar a cada X minutos por todos os checkBoxes você não põe um changeListener em cada um?
[quote=thiago_spdvr]Bom dia, tudo bem ?
Em determinada tela de um sistema meu tenho mais ou menos 50 JCheckBox, que determinada hora tenho que verificar todos, se estão habilitados ou não, checados ou não.
Minha divida é a seguinte. Tem algum forma de eu iterar sobre esses componentes, utilizando um for, por exemplo ou eu preciso realmente fazer o uso de IFs ?
[/quote]
Ter até tem, mas não é a forma correta de usar o swing. O correto é implementar um listener e associá-lo a cada checkbox. o mesmo listener pata todos os checks. O listener deve descobrir o check e modificar um array de booleans ou um objeto BitSet, correspondente aos checkbox. Quando vc precisar consultar o estadio, vc usa esse objecto dentro do listener (array boolean / BitSet)
[quote=sergiotaborda][quote=thiago_spdvr]Bom dia, tudo bem ?
Em determinada tela de um sistema meu tenho mais ou menos 50 JCheckBox, que determinada hora tenho que verificar todos, se estão habilitados ou não, checados ou não.
Minha divida é a seguinte. Tem algum forma de eu iterar sobre esses componentes, utilizando um for, por exemplo ou eu preciso realmente fazer o uso de IFs ?
[/quote]
Ter até tem, mas não é a forma correta de usar o swing. O correto é implementar um listener e associá-lo a cada checkbox. o mesmo listener pata todos os checks. O listener deve descobrir o check e modificar um array de booleans ou um objeto BitSet, correspondente aos checkbox. Quando vc precisar consultar o estadio, vc usa esse objecto dentro do listener (array boolean / BitSet)[/quote]
Exatamente onde queria chegar.
Daí você alimentando esse set faz uma operação bem menos custosa, sob demanda e que consome somente um pouco (mínimo) de memória a mais, mas salva muito processamento.