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 :
la classe NumberComparator est la suivante (je marque "-" quand c'est un NaN ou Infinity) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TableRowSorter sorter = new TableRowSorter<DefaultTableModel>(monModel); NumberComparator comparateurNombre = new NumberComparator(); sorter.setComparator(3, comparateurNombre); monTableau.setRowSorter(sorter);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
-
-
-
Partager