Pergunta

Atualmente, estou usando o seguinte método no meu jtable para obter uma classificação automática nas colunas

table.setAutoCreateRowSorter(true);

Atualmente, isso me permite clicar em cada cabeçalho e a coluna correspondente classificará qualquer coisa com letras. Está bagunçando quando tenta classificar minhas colunas com números inteiros. Parece estar classificando cada dígito de cada vez, em vez de classificar pelo número real. Por exemplo, ele dirá que 8 é maior que 100, pois 8 é maior que 1. Existe alguma maneira de substituir esse comportamento?

Foi útil?

Solução

Está bagunçando quando tenta classificar minhas colunas que têm números inteiros

Provavelmente porque:

  1. Você está armazenando os números como cordas, ou
  2. Você está armazenando os dados como um objeto inteiro, mas não substituiu o getColumnClass() Método do seu Tablemodel para retornar Integer.class Para essa coluna. O comparador adequado será usado apenas quando sua classe de coluna estiver correta.

Veja a seção do tutorial de balanço sobre Conceitos: Renderizadores e editores Para obter mais informações e um exemplo de como você pode substituir o método getColumnClass ().

Outras dicas

Você provavelmente precisa definir um classificador de linha com o comparador específico:

Comparator<Integer> comparator;
TableRowSorter sorter;
table.setRowSorter(sorter);
sorter.setModel(table.getModel());
sorter.setComparator(comparator);

Aqui pode ser encontrado mais sobre o comparador e possíveis problemas com ele. Mas, @camickr também está certo que, se a classe de coluna estiver definida corretamente, pois normalmente não deve ser necessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top