Originariamente inviato da fcorsa
ciao restituisce questo :

class java.lang.Object

sulla colonna interessata.

dovrebbe essere un intero o sbaglio?
La logica usata da TableRowSorter è:

TableRowSorter uses Comparators for doing comparisons. The following defines how a Comparator is chosen for a column:

1. If a Comparator has been specified for the column by the setComparator method, use it.
2. If the column class as returned by getColumnClass is String, use the Comparator returned by Collator.getInstance().
3. If the column class implements Comparable, use a Comparator that invokes the compareTo method.
4. If a TableStringConverter has been specified, use it to convert the values to Strings and then use the Comparator returned by Collator.getInstance().
5. Otherwise use the Comparator returned by Collator.getInstance() on the results from calling toString on the objects.
Non hai specificato sicuramente un Comparator per quella colonna (quindi non è il punto 1), il model restituisce Object.class (quindi nemmeno il punto 2), Object non implementa certo Comparable (nemmeno il punto 3), non c'è sicuramente un TableStringConverter (nemmeno il punto 4) .... rimane il punto 5.

Quindi TableRowSorter prende gli oggetti, se hai detto che sono degli Integer, ne ottiene una stringa e ordina con un criterio "su stringhe".
E ovviamente in tale modo 12 viene prima di 2!!

Soluzioni: o fai restituire il tipo colonna come Integer.class (Integer implementa Comparable, quindi sei nel punto 3). Oppure imponi un Comparator (punto 1) ma non credo che ti convenga.