Bom galera, o problema é o seguinte
Implementei alguns AbstractTableModels para as minhas entidades, implementei um formulário único de pesquisa, que pode ser chamado de todos os cadastros (apenas passo o AbstractTableModel para o JTable e está preenchido), cada um é mostrado perfeitamente nos formulários e beleza.
O problema é o seguinte, preciso mudar a forma que implementei pois precisarei de um filtro para a pesquisa das informações.
Por exemplo, no cadastro de Clientes, no formulário de pesquisa, a opção de digitar o código ou o nome do cliente pra fazer a filtragem e retornar para a tela de cadastro o cliente selecionado.
No meio do processo, implementei também uma classe de paginação (Primeiro, Anterior, Próximo e Último) nas telas do cadastro, sendo única a lista que uso em segundo plano na paginação e envio para a tela de pesquisa.
Quando implemento um filtro e dou o “getSelectedRow”, e jogo isso como índice da minha lista, logicamente vai retornar a informação naquele índice e não a informação correta selecionada. Por exemplo: Tenho 10 clientes, com códigos de 1 a 10. Ao pesquisar pelo cliente de código 5, apenas um está no JTable e ao selecioná-lo (getSelectedRow) tenho o cliente no índice 1 da lista.
Gostaria de uma dica de implementação para não ter esse tipo de problema, estou utilizando [color=white]tentando[/color] o pattern MVP…
Exemplo dos códigos:
// Aqui a chamada do método de pesquisa
@Override
public void pesquisa()
{
try
{
this.resetLista();
//No construtor eu passo o Modelo, a Classe, o label do formulário (putz...) e o presenter atual, para o qual o objeto será retornado...
new PesquisaPresenter().createView(new ClientesTableModel<Cliente>(Cliente.class), "Nome", this);
}
........
//Aqui já é no Presenter da pesquisa o retorno do objeto selecionado ESTÁ HORRÍVEL!! eu sei, irei mudar, é que o prazo estava curto hehe
//Não sei porque não chamei o método de "retornaObjetoSelecionado()"
public void updateViewCadastro()
{
// Corrigir!
if (origem instanceof CadastrarEntregaPresenter)
{
((CadastrarEntregaPresenter) origem).setResultPesquisa((Entrega) this.modelo.getObject(view.getLinhaSelecionada()));
}
else if (origem instanceof CadastroPresenter)
{
((AbstractPaginacao) origem).setItemAtual(view.getLinhaSelecionada());
((AbstractPaginacao) origem).getItemAtual();
}
((PesquisaWindow) view).dispose();
Obrigado antecipadamente pela ajuda!!!