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 : 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);
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
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
-
-
-