Olá pessoal,
Tenho uma JTable para itens de um pedido que está sendo digitado pelo usuário, a qual usa como modelo uma classe estendida de AbstractTableModel.
Uso nela o setAutoCreateRowSorter(true);
Ao adicionar linhas nesta JTable, necessito que as mesmas fiquem ordenadas de forma decrescente pela primeira coluna, sem necessidade de clicar no cabeçalho dela. Como fazer isto ?
Você pode implementar a classe Comparable<> e ao adicionar algum item na sua lista, antes de atualizar a sua Jtable, você efetua a ordenação através do Collections.sort(suaLista);
lucas_duzo,
obrigado pela dica.
Solução encontrada:
[code] public void ordenarPorItemDecrescente() {
Collections.sort(this.linhas, new Comparator<ItemPedido>() {
@Override
public int compare(ItemPedido c1, ItemPedido c2) {
return c2.getItem().compareTo(c1.getItem());
}
});
fireTableDataChanged();
}[/code]
Adicionando o item na jTable:
public void adiciona(ItemPedido c) {
this.linhas.add(c);
ordenarPorItemDecrescente();
fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1);
}
e se remover algum item da jTable, fazer o seguinte:
public void remove(int indice) {
this.linhas.remove(indice);
fireTableRowsDeleted(indice, indice);
for (int i = 0; i < this.linhas.size(); i++) {
this.linhas.get(i).setItem(String.format("%02d", this.linhas.size() - i)); // corrige a numeração dos itens.
}
ordenarPorItemDecrescente();
}