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
tente isso:
- adicione o evento ItemStateChanged ao seu jComboBox
- 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");
.......
}
}
}
Melhor que isso.
- 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.
[code]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();
}
}[/code]
- Preencha sua combo com objetos dessa classe Estado, e não com as Strings do nome.
for (Estado e : Estado.values()) {
jComboBoxEstado.addItem(e);
}
- 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.
Muitoooo obrigado pelas sugestões !!
Bem esclarecedoras.
vou testar aqui
vlw!