jComboBox preencher jTextField

3 respostas
RicardoYukito

Tenho um Combo com todos os estados cadastrados , coloquei os nomes dos estados na propriedade model do componente.
Quando eu selecionar por exemplo “SAO PAULO” queria preencher meu jTextField_SiglaEstado com a sigla do estado “SP”.

if (combo == SAO PAULO){

txtSigla.setText (SP)

}

nessa ideia… naos ei como fazer…
vlw

3 Respostas

G

tente isso:

  1. adicione o evento ItemStateChanged ao seu jComboBox
  2. dentro do metodo do evento faça algo do tipo
private void jComboBoxEstadoItemStateChanged(java.awt.event.ItemEvent evt) {
        //verifica se o usuario selecionou o estado
        if (evt.getStateChange() == java.awt.event.ItemEvent.SELECTED){
            //verifica se o item que o usuario selecionou eh != null
            if (jComboBoxEstado.getSelectedItem() != null){
                //verifica a sigla correspondente
                String uf = jComboBoxEstado.getSelectedItem().toString();
                if (uf.equals("Amazonas"))
                    txtSigla.setText ("AM");
                else if (uf.equals("Acre"))
                    txtSigla.setText ("AC");
                .......
            }
        }
    }
ViniGodoy

Melhor que isso.

1. Crie uma classe chamada Estado (pode ser um enum também). Nele, tenha as propriedades nome e sigla. Faça o toString() dele mostrar o nome.

public enum Estado {
   SP("SP", "São Paulo"),
   PR("PR", "Paraná");

   private String nome;
   private String sigla;

   private Estado(String nome, String sigla) {
      this.nome = nome;
      this.sigla = sigla;
   }

   public String getNome() { 
      return nome; 
   }

   public String getSigla() { 
      return sigla; 
   }

   @Override
   public String toString() {
      return getNome();
   }
}
2. Preencha sua combo com objetos dessa classe Estado, e não com as Strings do nome.
for (Estado e : Estado.values()) {
   jComboBoxEstado.addItem(e);
}
3. No seu itemStateChanged, simplesmente mude a sigla:
private void jComboBoxEstadoItemStateChanged(ItemEvent evt) {
   if (evt.getStateChange() != ItemEvent.SELECTED){   
      return;
   }

   if (jComboBoxEstado.getSelectedItem() == null){
      txtSigla.setText("");
      return;
   }

   //Obtém o estado selecionado
   Estado estado = (Estado) jComboBoxEstado.getSelectedItem();
   txtSigla.setText(estado.getSigla()); //Troca a sigla
}

Note que essa sugestão elimina aquele if gigante e medonho que testaria estado por estado. Ela também é melhor para o caso de você precisar de outras propriedades (como o ID do Estado) no futuro. Sem falar que deixa o código do estado totalmente concentrado na classe Estado, o que facilita muito a manutenção.

RicardoYukito

Muitoooo obrigado pelas sugestões !!
Bem esclarecedoras.

vou testar aqui
vlw!

Criado 28 de junho de 2010
Ultima resposta 28 de jun. de 2010
Respostas 3
Participantes 3