Bom dia amigos!
Venho através desse pedir novamente ajuda de vocês, e agradecer pelas respostas anteriores.
Seguinte, vamos começar pelo início … hehe!
Estou usando um AbstractTableModel baseado no que o Vinicius Godoy Sugeriu em outro tópico.
Estou usando a função abaixo para filtrar o array da JTable a partir de cada letra digitada:
RowFilter< CddTableModel, Object> filtranome = null;
RowFilter< CddTableModel, Object> filtrauf = null;
private void FiltroNome() {
if (novo == false)
{
List<RowFilter<CddTableModel,Object>> filters = new ArrayList<RowFilter<CddTableModel,Object>>(2);
{
RowFilter<CddTableModel, Object> rf = null;
//If current expression doesn't parse, don't update.
try {
filtranome = RowFilter.regexFilter("(?i)" + txtNomeCdd.getText(), 1); //(?i) Ignora Case Sensitive
filtrauf = RowFilter.regexFilter("(?i)" + txtUfCdd.getText(), 2); //(?i) Ignora Case Sensitive
filters.add(filtranome);
filters.add(filtrauf);
rf = RowFilter.andFilter(filters);
} catch (java.util.regex.PatternSyntaxException e) {
return;
}
sorter.setRowFilter(rf);
}
}
}
Até ai tudo certo, dou um select Ordenando por ordem alfabética do estado, e por ordem alfabética da cidade.
Agora vem o problema:
Se eu clicar no título da JTABLE, ela “Re-Ordena” os campos, por ordem decrescente/crescente
Mas quando eu clico no campo “Código”, ele ordena tudo errado!!!
Por exemplo, em vez de 1,2,3,4,5 … fica 2,9,1,9,10,11,15! (Todos os campos são tratados como String)
Eu seto o sorter dessa maneira:
[b]CddTableModel model = new CddTableModel(listainfocdd);[/b]
tblCdd.setModel(new CddTableModel(listainfocdd));
[b]sorter = new TableRowSorter<CddTableModel>(model);[/b]
[b]tblCdd.setRowSorter(sorter); [/b]
Agradeço a Ajuda de todos, e Um Grande Abraço!
Andrews Moro
Ai eu gostaria de uma das duas soluções:
Solução 1 : Como Bloquear o “Clique” no título da coluna para reordenar os campos?
Solução 2 : Como ordenar corretamente o campo “Código” Composto de números?