Primeiro de tudo, crie um método get no seu TableModel, que retorna uma cidade inteira e pare de usar o getValueAt:
public Cidade get(int row) {
return listarCidade.get(row);
}
Isso te livra de várias coisas:
Depender da posição das colunas;
Ter que localizar uma cidade que o model já tem no banco de dados;
Ter que fazer casts do tipo de dado dos campos;
Ter que trabalhar com tipos de dados individuais e não com objetos.
Em seguida, certifique-se que o método toString() da classe que você quer exibir no combo esteja implementado com o que você quer que apareça na combo:
@Override
public String toString( ){
return nome;
}
É importante implementar o equals e o hashcode dessa classe também.
Finalmente, agora basta retirar do model e inserir na combo. Note que com o método get fica bem mais legível:
private void tbDadosMouseClicked(java.awt.event.MouseEvent evt) {
int row = tbDados().getSelectedRow();
if (row < 0)
return;
CidadeTableModel model = (CidadeTableModel)(tbDados.getModel());
Cidade cidade = model.get(row);
tfCodigo.setText(cidade.getCodigo());
tfNome.setText(cidade.getNome());
cbUf.setSelectedItem(cidade.getUf());
}
Bom dia , sou iniciante e estou com um problema parecido com este.
Queria saber como estar setando o valor quando seleciono uma linha na tabela no jcombox, mas não estou conseguindo , quando o valor é numero ele mostra normalmente, agora quando é letra ele não mostra no jcombox