Olá, estou com um problema em setar um Objeto em uma JComboBox.
for (Object obj : controll.listarEstados()) {
estado = (Estado) obj;
comboBoxUf.addItem(estado); }
for no meu construtor para preencher a JcomboBox
private void ft_cepFocusLost(java.awt.event.FocusEvent evt) {
//---------------------
Estado estado;
`if (wcep.wasSuccessful()) {
txt_Bairro.setText(wcep.getBairro());
txt_rua.setText(wcep.getLogradouro());
estado = controler.validarEstado(wcep.getUf());
comboBoxUf.setSelectedItem(estado.getNome());
}
}
Metodo que pesquisa o o endereço quando o campo de cep deixa de ter foco
Um teste que eu fiz, ele retorna o objeto selecionado mas não seta na JcomboBox
`
Mostre a declaração do objeto comboBoxUf
private javax.swing.JComboBox<Object> comboBoxUf;
isso que vc quer saber?
Quando você utiliza o método setSelectedItem(Object object)
, é preciso comparar o Objeto passado como parâmetro para selecionar o Objecto desejado correto? E ele faz isso através do método equals(Object object)
, desta forma selecionando o Objecto que é igual ao que você passou no setSelectedItem(Object object)
.
Então a não ser que você sobrescreveu o equals
do Estado para que um Estado seja igual ao outro quando eles tem o mesmo nome, você está passando o parâmetro errado pro método.
Você deveria passar o objeto estado em sí, e não a propriedade nome:
comboBoxUf.setSelectedItem(estado);
E é claro, assumindo que você utiliza os Objetos carregados do banco utilizando a mesma referência, não sei como está implementado seu método de busca.
De qualquer forma, eu sobrescreveria o método equals()
da classe Estado da forma que mais fizer sentido no seu projeto.