Olá,
Tenho 1 JTable com 4 colunas. Preciso ordenar em ordem alfabética a 2º coluna. O valor contido nela é String.
Se alguém puder ajudar agradeço.
Obrigado.
Olá,
Tenho 1 JTable com 4 colunas. Preciso ordenar em ordem alfabética a 2º coluna. O valor contido nela é String.
Se alguém puder ajudar agradeço.
Obrigado.
Então, não seria melhor vc ordenar um List por exemplo antes de passar para o seu model? Ai ja sairia ordenado sua coluna.
Resolvido. Realmente , implementei a interface comparable na classe da lista que popula a JTable. É só fazer override do método compareTo e chamar o método Collections.sort(ListaDeObjetosDaClasseQueImplementaComparable);
Pra auxiliar alguém que precise, aqui tem um outro exemplo : http://www.guj.com.br/posts/list/20989.java
Obrigado.
Também é possível pedir para a JTable fazer ordenação nas colunas.
Dê também uma olhada no auto-filtro, da minha assinatura. Além de ordenação ela faz filtragem, igual ao filtro do excel.
[quote=ViniGodoy]Também é possível pedir para a JTable fazer ordenação nas colunas.
Dê também uma olhada no auto-filtro, da minha assinatura. Além de ordenação ela faz filtragem, igual ao filtro do excel.[/quote]
Despois do model ja pronto, como que seria pra JTable ordenar as colunas?
Dê um table.setAutoCreateRowSorter(true); e dê uma olhada.
Ela também faz filtragem. Dê uma olhada nesse link, que explica o recurso em detalhes:
http://download.oracle.com/javase/tutorial/uiswing/components/table.html#sorting
Já o auto-filtro funciona como um Decorator do seu model. Ou seja, ele é um model também, que você usa “por cima” do seu model, mais ou menos como vc faz com os InputStreams:
Dê um table.setAutoCreateRowSorter(true); e dê uma olhada.
Ela também faz filtragem. Dê uma olhada nesse link, que explica o recurso em detalhes:
http://download.oracle.com/javase/tutorial/uiswing/components/table.html#sorting
Já o auto-filtro funciona como um Decorator do seu model. Ou seja, ele é um model também, que você usa “por cima” do seu model, mais ou menos como vc faz com os InputStreams:
Hum, bom de mais! Vlw Vini!
Interessante. Mais pro meu caso não tenho necessidade de alto filtro. Este método simples ja foi a solução.
Então fica registrado varias formas de se resolver.
Obrigado.
ViniGodoy,
Primeiramente, parabéns pelo projeto. Ficou muito bom.
Precisei fazer uma pequena adaptação para atender à minha necessidade. Se possível, peço a gentileza de analisar possíveis impactos.
A mudança foi feita no método com.towel.swing.table.TableFilter.processFilter()
removi do corpo deste método o trecho if (!isFiltering())
return;
Motivo?
É que quando eu clicava em alguma opção do filtro depois escolhia “(All)” o método filter.getFilteredRows().size()
sempre retorna zero, quando na verdade, deveria retornar a quantidade de linhas da table.
Se eu estiver errado, ou se isso implica em algum impacto, por favor, sinalize.
abraços.
Talvez seja melhor testar essa condição específica no getFilteredRows(), e faze-lo retornar todas as linhas caso não esteja sendo filtrado.
É que isso garante uma melhor performance no filtro.