Uma forma de não deixar isso ocorrer é não inserir diretamente Strings em uma JComboBox. O correto é inserir objetos (de uma classe bem simplesinha que implemente o método public String toString() de forma que mostre o que você quer ver no ComboBox). Aí getSelectedItem (não getSelectedIndex) retorna para você o objeto adequado. Por exemplo, você pode ter um objeto da classe Estado, como abaixo, e inserir esses objetos no seu JComboBox. Por exemplo, new Estado (“SP”, “São Paulo”). Então, o JComboBox vai mostrar “SP”, “RJ” etc. (as siglas). Quando você precisar do nome, você faz um cast do getSelectedItem para Estado, e pega o nome.
publicclassEstado{
publicStringsigla;publicStringnome;publicEstado(Strings,Stringn){sigla=s; nome = n; }publicStringtoString(){returnsigla; }
}
M
marcusviniciusaso
muriloazs O problema no código que está nesse link é que o autor está utilizando String. Duas Strings “a” e “a” são consideradas referências iguais, pois as referências apontam para o mesmo objeto no pool de Strings. Se você fizer o mesmo código utilizando objetos que são mostrados no JComboBox como tendo descrições iguais, mas que na verdade são considerados objetos diferentes, esse problema não ocorre. Tente com o código abaixo(uma adaptação do que está no link).