Boa noite pessoal,
Estou um tanto irritado aqui já com um problema e, antes que comenter ou perguntem, informo que já vi os tópicos parecidos e nenhuma das soluções resolveu meu problema.
Tenho uma JComboBox onde eu adiciono uma lista de objetos.
Já alterei o toString() para que na comboBox apareça o nome do bairro. O problema é que na lista existem bairros com nomes iguais (não me perguntem o porquê rs) e quando eu faço setSelectedItem(bairro) ele deixa selecionado o primeiro bairro com o nome igual, sendo que as vezes é um bairro que ta no quase no final da lista.
Já consegui recuperar o índice do bairro correto através do método indexOf(bairro), ele retorna correto, mas quando faço setSelectedIndex(index) ele ignora o ‘index’ quando ele encontra um bairro com o nome igual antes.
Alguém pode me ajudar nisso pelo amor de Deus?! Já tentei um monte de coisa, tenho minha comboBoxModel aqui, já tentei de tudo e nada deu certo!!!
public class BairroVO {
private int id;
private String nome;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String toString(){
return nome;
}
}
AE, RESOLVI DA SEGUINTE MANEIRA:
MyComboBoxModel model = (MyComboBoxModel) gui.bairro.getModel();
int x = model.getIndexOf(cliente.getBairro());
gui.bairro.setSelectedItem(gui.bairro.getItemAt(x));
model.setSelectedItem(cliente.getBairro());
Também sobreescrevi os métodos de DefaultComboBoxModel:
public int getIndexOf(Object anObject) {
for(int i=0; i<objects.size(); i++)
if(((BairroVO) anObject).getId() == ((BairroVO) objects.get(i)).getId())
return i;
return 0;
}
public void setSelectedItem(Object anObject) {
if ((selectedObject != null && !selectedObject.equals( anObject )) ||
selectedObject == null && anObject != null) {
for(int i=0; i<objects.size(); i++)
if(((BairroVO) anObject).getId() == ((BairroVO) getElementAt(i)).getId()){
selectedObject = getElementAt(i);
fireContentsChanged(this, -1, -1);
}
}
}