Domanda

Attualmente sto usando il seguente metodo sul mio jtable per ottenere un ordinamento automatico sulle colonne

table.setAutoCreateRowSorter(true);

Questo attualmente mi consente di fare clic su ogni intestazione e la colonna corrispondente ordinerà qualsiasi cosa con lettere. Sta incasinando quando cerca di ordinare le mie colonne che hanno numeri interi. Sembra che stia ordinando ogni cifra alla volta invece di ordinare per il numero effettivo. Ad esempio, dirà che 8 è più grande di 100 poiché 8 è più grande di 1. C'è un modo per sovrascrivere questo comportamento?

È stato utile?

Soluzione

Sta incasinando quando cerca di ordinare le mie colonne che hanno numeri interi

Probabilmente perché:

  1. Stai conservando i numeri come stringhe, o
  2. Stai archiviando i dati come oggetto intero ma non hai sovrascritto il getColumnClass() Metodo del tuo tablemodel per tornare Integer.class per quella colonna. Il comparatore corretto verrà utilizzato solo quando la classe di colonna è corretta.

Vedere la sezione dal tutorial di swing Concetti: rendering ed editori Per ulteriori informazioni e un esempio di come si potrebbe sovrascrivere il metodo getColumnClass ().

Altri suggerimenti

Probabilmente è necessario impostare un selezionatore di righe con il comparatore specifico:

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

Qui si può trovare di più sul comparatore e i possibili problemi con esso. Ma @Camickr ha anche ragione sul fatto che se la classe di colonna è impostata correttamente, per intero non dovrebbe essere normalmente necessario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top