Certo, se ele está chegando até aquele ponto e tem um Objeto preenchido pra comparar, a gente pode sobrescrever o método Equals, ou mais fácil, transformar a List em Stream e filtrar por algum atributo de identificação.
Então pra comparar, a sua classe ContaReceber tem um atributo único de ID correto? É um Integer? Posta a declaração da sua classe ContaReceber pra eu ver.
E qual versão do Java você está utilizando? Java 8+?
Java 8
public class ContasReceber {
}
Certo, é do tipo primitivo int. Então altera o método “getRow” que coloca a seleção na JTable e deixa ele assim:
public void getRow() {
ContasReceber contaReceber = this.contaReceber;
tbContas.setModel(tableModel);
List<ContasReceber> listContas = tableModel.getListBeans();
// Transforma em Stream, filtra e retorna o Objeto que tem o mesmo ID
// Se não tem um objeto com o mesmo ID retorna null
ContasReceber contaMatch = listContas.stream()
.filter(conta -> conta.getIdContasReceber() == contaReceber.getIdContasReceber()).findFirst()
.orElse(null);
if (contaMatch != null) {
int indexModel = listContas.indexOf(contaMatch);
int indexView = tbContas.convertRowIndexToView(indexModel);
tbContas.setRowSelectionInterval(indexView, indexView);
tbContas.scrollRectToVisible(new Rectangle(tbContas.getCellRect(indexView, 0, true)));
}
}
Pow cara!
Nem acredito que deu certo, já estava desistindo…kkkkk
Muito bom!
Só mais uma dúvida, a tabela na tela B vem sempre carregada com o scroll na metade, não fica no local onde ocorreu a seleção, tem como arrumar isso?
Tem essa linha no código, mas não tá legal:
tbContas.scrollRectToVisible(new Rectangle(tbContas.getCellRect(indexView, 0, true)));
Cara, se não me engano com essa linha de código era pra fazer o scroll automaticamente até que a linha selecionada fique visível na tela.
A seleção não está ficando visível na tela?
Pode ser que algum Listener ou Sorter está fazendo algo que você não percebeu e alterando este comportamento esperado
Consegui, jogue a linha para o ‘formWindowActivated’…Funcionou beleza!!
Obrigado pela ajuda e pelas dicas!