Ajuda com formulário contendo vários JComboBox

4 respostas
irvingellan

Boa noite.

Gostaria de falar sobre um problema que estou tendo e saber se alguem pode me dar uma dica ou uma ajuda.

Seguinte…
Eu tenho um formulário em Swing, nesse formulário tem 11 JComboBox, o primeiro pra escolher um “tipo” e os demais ficam desabilitados até ser escolhido um “tipo”.
apartir da escolha do tipo, os demais JComboBox serão habilitados de acordo com cada diferente “tipo”.
Esses detalhes vão variar, por que cada tipo pode ter ou não um desses JComboBox para habilitar e selecionar uma opção.

O que eu faço é jogar um array de “tipos” no primeiro JComboBox e quando abrir o formulário para editar, eu recebo o tipo do banco e faço um if pra cada tipo para selecionar o tipo cadastrado…
O problema é que eu tenho mais de 30 tipos…E se eu quiser mudar uma letra do nome de algum tipo, tenho que mudar nos IFs…
Eu sei que isso não é elegante nem nada, mas foi a maneira que encontrei pra fazer na época…
Então, eu queria saber se existe uma maneira melhor de fazer isso e não depender de alterações no código.
Pensei em algo tipo, receber os “tipos” distintos do banco e depois verificar um por um dos resultados para marcar como selecionado no JComboBox.
Mas não sei como fazer isso agora.

Outra coisa, agora ficou um pouco mais complicado.
Quando eu escolher um “tipo”, digamos que o tipo1 vai habilitar os JComboBox 2, 4 e 5, cada um com sua lista de opções.
Digamos que o “tipo” 3 Habilite os JComboBox 2, 4, 5 e 6. Os JComboBox 2, 4, 5, 6, etc… terão a mesma lista de opções.
mas agora eu preciso mudar isso, os “tipos” podem ter os mesmos JComboBox para modificar, mas as informações dentro de cada um precisam ser diferentes.
Eu fiz uma coisa terrível, criei uma classe JComboBoxGeral com as informações em Arrays de cada JComboBox.
Para fazer o que eu preciso agora, eu fiz várias classes para cada “tipo” e nos campos dos JComboBox eu coloquei as opções.
Exemplo: classeJComboBoxTipo1, classeJComboBoxTipo2, classeJComboBoxTipo3 e por aí vai…

Não ficou nada legal, mas foi a solução que eu encontrei.

Gostaria de ouvir a opinião de voces e qualquer ajuda será bem vinda.

Obrigado.

4 Respostas

irvingellan

Se não ficou claro, podem perguntar que eu explico melhor.

R_chieck

Ola, se entendi bem, voce verifica oque está selecionado no combo pela string do item, correto?
Não recomendo este uso, não vou citar todos motivos, voce já encontrou um e já é o bastante.
No seu combo voce deve estar usando o model default, recomendo que implemente o seu para que possa abrigar no seu combo uma lista de objetos e não de strings.
Ai poderás fazer o tratamento pelo objeto, pelo código… isso resolve seu problema e muitos futuros que terias. caso não consiga implementar seu model use a biblioteca Towel http://www.guj.com.br/java/227402-markutils-sob-novo-nome
Além disso ela traz um model para JTable muito bom, e lembrando apenas: não use DefaultTableModel em suas JTable, se não está usando ignore, rsrs

irvingellan

Chieck, obrigado pela ajuda.

Mas tenho outra dúvida.
Nesse JComboBox dos tipos que eu tenho, eu não vou mais ficar fazendo vários IFs para verificar string por string.
Mas nesse caso, se eu quiser tirar essa comparação do código e colocar todos os tipos de string no banco e depois eu aumente essa quantidade de tipos, por exemplo, colocar 200 opções no JComboBox de tipos, como seria isso?
Tem alguma idéia mais “elegante” para isso?

Obrigado mais uma vez.

irvingellan

Alguem?

Criado 14 de junho de 2012
Ultima resposta 15 de jun. de 2012
Respostas 4
Participantes 2