[RESOLVIDO] Pegar linha apos filtro jtable

10 respostas Resolvido
calves

Pessoal, como pego uma linha na jtable após utilizar o filtro (TableRowSorter)?

10 Respostas

darlan_machado

getSelectedRow não funciona?

calves

funciona normalmente com a lista carregada sem o filtro, edita, exclui, mas, quando aplico filtro tipo o que começa com a letra “M” eu já visualizo o item desejado e clico selecionando a linha ele não faz a edição ou exclusão.

estranho pois sem usar o filtro ele faz tudo…

veja neste outro tópico que levantei:
/t/jtable-com-filtro-evento-keyreleased-nao-edita-e-exclui/386541?u=calves

darlan_machado

Primeiro que se tem um tópico e não foi resolvido, mantenha nele. A fim de organizar e evitar que vários tópicos sobre o mesmo tema sejam abertos.
Veja, o funcionamento é simples: você seleciona uma linha, identifica o conteúdo dela no teu table model e a partir daí, executa a ação.
O que pode ocorrer é você não ter definido o comportamento correto para o filtro, no momento que este deve identificar qual o objeto referente a linha selecionada.

D

Será que não é porque a JTable está retornando um índice que não bate com o seu model após aplicar o Sorter?
A JTable tem um método chamado convertRowIndexToModel() que você passa o index retornado no getSelectedRow() e ele retorna o índex correspondente no Model, já que com o Sorter o que é filtrado é a sua View (que embaralha então os índices) e não o seu Model.

calves

Deu certo Daniel95, muito obrigado mesmo!

mais uma pergunta, sabe me informar como voltar a jtable ao estado carregado sem precisar buscar no banco novamente? (retirar o filtro) pois mando limpar a jtextField e não aparece mas quando limpo com o apagar do teclado aparece.

calves

Entendo darlan_machado sobre ter criado outro tópico foi mal. obrigado pela sua ajuda…

D

Olha, eu não sei como esta implementado seu Sorter, mas se quando você digita no textfield ele está “voltando” os registros, provavelmente você tem um método rodando lá no KeyListener deste textfield que está buscando de novo no banco sim… Você poderia quando programaticamente limpar o textfield como disse invocar este mesmo método que está rodando no KeyListener.

calves

Daniel95, desde já muito obrigado pelas orientações, não consegui aplicar no projeto sua explicação você poderia me auxilar mais uma vez rsrs… veja meu Sorter:

public void filtrarTabela() {
        TableRowSorter<TableModel> sorter = new TableRowSorter<>(modeloTabela);
        view.getTabela().setRowSorter(sorter);
        String text = view.getTxtPesquisar().getText().toUpperCase();
        if (text.length() == 0) {
            sorter.setRowFilter(null);
        } else {
            sorter.setRowFilter(RowFilter.regexFilter(text));
        }
    }

aqui as demais classes:
/t/jtable-com-filtro-evento-keyreleased-nao-edita-e-exclui/386541?u=calves

D
Solucao aceita

Se você fizer a mesma coisa que no seu método aí não funciona? Setar null:
sorter.setRowFilter(null);

calves

aee… vlw mesmo mano funcionou… tenho muito que estudar!! Obrigado

Criado 10 de maio de 2019
Ultima resposta 14 de mai. de 2019
Respostas 10
Participantes 3