[RESOLVIDO] Jtable com coluna ordenada decrescente do início

2 respostas
V

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 ?

2 Respostas

L

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);

V

lucas_duzo,
obrigado pela dica.

Solução encontrada:
public void ordenarPorItemDecrescente() {
        Collections.sort(this.linhas, new Comparator&lt;ItemPedido&gt;() {
            @Override
            public int compare(ItemPedido c1, ItemPedido c2) {
                return c2.getItem().compareTo(c1.getItem());
            }
        });

        fireTableDataChanged();
    }
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 &lt; this.linhas.size(); i++) {
            this.linhas.get(i).setItem(String.format(&quot;%02d&quot;, this.linhas.size() - i)); // corrige a numeração dos itens.
        }
        ordenarPorItemDecrescente();
    }
Criado 26 de abril de 2013
Ultima resposta 9 de mai. de 2013
Respostas 2
Participantes 2