Ordenar campo int [RESOLVIDO]

3 respostas
M

Pessoal já pesquisei o forum todo e achei muita coisa que me ajudaram a chegar neste ponto mais não consigo passar dele, tenho certeza que com ajuda de vcs vou resolver isto.

quero ordenar minha tabela clicando no nome da coluna então usei o

RowSorter<TipoTableModel> sorter = new TableRowSorter<TipoTableModel>(modelo);

mais ele não ordena do jeito que quero quando a coluna é numerica pesquisando vi que terá que usar o Comparator e coloca-lo no meu sorter.setComparator(2, compare);
não estou consigo colocar pois ele não é do tipo do meu RowSorter.

tabela = new JTable();		
		RowSorter<TipoTableModel> sorter = new TableRowSorter<TipoTableModel>(modelo);				
		Comparator<Qtd> comparator = new Comparator<Qtd>() {		   
			public int compare(Qtd o1, Qtd o2) {
				return o1.getQtd() - o2.getQtd();
		    } 		      
		};		
		sorter.setComparator(2, comparator);

como não funcionou criei na MinhaTableModel um método que faz a ordenação

public void ordenaCampoNumerico() {
        //orden Numerica
        Collections.sort(clientes, new Comparator<Qtd>() {
 
            public int compare(Qtd o1, Qtd o2) {
                return o1.getQtd() - o2.getQtd();
            }
        }); 
        
        fireTableDataChanged();
    }

Gostaria de clicar no nome da coluna e ela reordenar o erro é bem simples mais não consigo arrumar
The method setComparator(int, Comparator ) is undefined for the type RowSorter

Obrigado

3 Respostas

carlos_hen

Kara nesse exemplo abaixo, a terceira coluna possui dados numéricos e está ordenando, sem a necessidade de comparator.

Dá uma olhada:
http://www.java-tips.org/java-se-tips/javax.swing/sorting-and-filtering-tables.html

flws.

M

havia visto este exemplo mas ele só faz as busca pela coluna “Symbol” quando tento ordenar pela “price” acontece o mesmo erro.

Alguém mais tem alguma Dica sobre oque pode ser onde cheguei mais perto foi com está dica

mas não consigo pois a minha TipoTableModel conflita com o setComparator

obrigado

M

pesquisando com mais calma encontrei o erro ele está na minha TipoTableModel

nela há um método

public Class<?> getColumnClass(int coluna) {
		// todas as colunas representam uma String
		return Integer.class;
	}

este código estava como String no retorno por isso não ordenava o campo do tipo int ao mudar o o return para Integer.class funcionou

obrigado a todos

Criado 3 de agosto de 2011
Ultima resposta 4 de ago. de 2011
Respostas 3
Participantes 2