[JTable] Le tri ne se fait que par paquet
Bonjour,
J'ai un JTable très grand (plusieurs milliers de lignes) et je voudrais le trier par rapport à une colonne contenant des nombres. Ma procédure est la suivante :
Code:
1 2 3 4
| TableRowSorter sorter = new TableRowSorter<DefaultTableModel>(monModel);
NumberComparator comparateurNombre = new NumberComparator();
sorter.setComparator(3, comparateurNombre);
monTableau.setRowSorter(sorter); |
la classe NumberComparator est la suivante (je marque "-" quand c'est un NaN ou Infinity) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class NumberComparator implements Comparator<String> {
public int compare(String o1, String o2) {
Double d1,d2;
try {
if(o1.equals("-")) d1=10000000.;
if(o2.equals("-")) d2=10000000.;
d1 = Double.parseDouble(o1);
d2 = Double.parseDouble(o2);
return (int) (d1-d2);
} catch (Exception e) {
//e.printStackTrace();
}
return 0;
}
} |
Mon soucis est qu'on dirait qu'il traite le tri par paquet (d'environ 500) et la colonne est trié par exemple comme cela :
1
2
3
40
56
60
-
-
-
2
6
7
40
80
-
-
-