JComboBox - troca de valores conforme escolha do usuário

2 respostas
newbcc

Pessoal, gostaria de uma dica para implementação da seguinte lógica:

Tenho 6 ComboBoxes. Elas são inicializadas com 7 itens de cores diferentes. Apenas o primeiro ComboBox está habilitado na inicialização do programa. Exemplo:

ComboBox 1 possui os seguintes itens {“branca”,“vermelho”,"verde,“amarelo”,“azul”,“ciano”,“magenta”. Todos os outros ComboBoxes possuem esses itens também na inicialização.

Idéia:
Quando o usuário escolher uma cor diferente de “branca” no primeiro combobox, o segundo combobox é habilitado retirando a cor selecionada no combo anterior, e assim sucessivamente com os demais.

Isso já está implementado e funcionando, porém, preciso agora elaborar uma lógica para o seguinte caso, para isso segue um exemplo:

ComboBox1 = Vermelho
ComboBox2 = Azul
ComboBox3 = Verde
ComboBox4 = Ciano
ComboBox5 = Magenta
ComboBox6 = Amarelo

O usuário poderá trocar a cor selecionada. Ele poderia trocar de cor “azul” do ComboBox2 para “magenta” e assim esta última não poderia estar disponível nos comboboxes seguintes (3,4,5 e 6), porém, a cor azul deverá está disponível para os demais.

Tem-se que manter sempre combinações de cores distintas. Não posso ter cores repetidas.

Eu vou tentar elaborar alguma coisa também, mas gostaria que se alguém já fez algo semelhante pudesse me enchaminhar dando algumas dicas de implementação.

Agradeço por qualquer ajuda.

Abraços

2 Respostas

ambuzr

gostei do exercicio e fiz aqui uma maneira que deu certo, nao otimizei mas da pra da uma luz

cria os 6 combobox depois em cada um cria um ActionPerformed

private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
removeCombo1();//aqui e o metedo do combo1
}

depois seta o metodo equivalente quele metodo que vc ta removendo
vamos la no metodo do combobox1

public void removeCombo1(){
   
     String corQuardar;//variavel da cor a ser removida
     String corRemover;//variavel para quardar a cor que foi selecionada anteriormente pra evitar
    //selecionar tudo de novo
    
           
            corRemover =  jComboBox1.getSelectedItem().toString();//escolheu a cor do combox que estamos selecionado, portanto quarda pra remover nos outros
            
            
            corQuardar =  jComboBox2.getSelectedItem().toString();//quarda a cor que esta selecionada pra depois coloca-la de novo
            jComboBox2.removeAllItems();//removemos tudo
            jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Vermelho", "Azul", "Verde", "Ciano", "Magneta", "Amarelo" }));//recolocamos tudo
            
            jComboBox2.removeItem(corRemover);//removemos o intem da cor que ja foi selecionada acima 
            jComboBox2.setSelectedItem(corQuardar);//seta novamente a cor que estava selecionada

            //o resto e tudo igual

                        
            corQuardar =  jComboBox3.getSelectedItem().toString();
            jComboBox3.removeAllItems();
            jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Vermelho", "Azul", "Verde", "Ciano", "Magneta", "Amarelo" }));
            
            jComboBox3.removeItem(corRemover); 
            jComboBox3.setSelectedItem(corQuardar);
            
            
            corQuardar =  jComboBox4.getSelectedItem().toString();
            jComboBox4.removeAllItems();
            jComboBox4.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Vermelho", "Azul", "Verde", "Ciano", "Magneta", "Amarelo" }));
            
            jComboBox4.removeItem(corRemover); 
            jComboBox4.setSelectedItem(corQuardar);
            
            
            corQuardar =  jComboBox5.getSelectedItem().toString();
            jComboBox5.removeAllItems();
            jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Vermelho", "Azul", "Verde", "Ciano", "Magneta", "Amarelo" }));
            
            jComboBox5.removeItem(corRemover); 
            jComboBox5.setSelectedItem(corQuardar);
            
            
            corQuardar =  jComboBox6.getSelectedItem().toString();
            jComboBox6.removeAllItems();
            jComboBox6.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Vermelho", "Azul", "Verde", "Ciano", "Magneta", "Amarelo" }));
            
            jComboBox6.removeItem(corRemover); 
            jComboBox6.setSelectedItem(corQuardar);
            
            
     
}

ai vc faz com todos os seus combobox, so modificando pra o combo q vc ta obtendo lembrando que nao ta otimizado ta puro mesmo pra ficar facil entendimento e tem uns bugs pq nao fiz com todos os combox, quando chegar em casa eu termino o resto e vejo como e que fica

vlw

newbcc

Opa cara, beleza!?

Então, vou dar implementar essa sua dica e fazer as considerações necessárias.

Muito obrigado por essa dica. Valeu mesmo, qualquer coisa volto a postar :stuck_out_tongue:

Abraços!!!

Criado 4 de setembro de 2008
Ultima resposta 4 de set. de 2008
Respostas 2
Participantes 2