Salut,

Je suis débutant en Java, et pour un stage je dois réaliser un plug-in ImageJ faisant apparaître une JTable contenant uniquement des valeurs numériques (int et double). J'essaye de permettre à l'utilisateur de trier ses colonnes via le rowsorter, cependant celui-ci semble prendre en compte mes données comme des String, du coup il les tri de la manière suivante :

1-2-8-10-100-4-25-7 ---> 1 - 10 - 100 - 2 - 25 - 4 -7 - 8 (et je cherche à avoir : 1 - 2 - 4 - 7 - 8 - 10 - 25 - 100.

J'ai réussi pour les int en faisant ceci (trouvé sur internet) :

En bas de ma class :

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
	class NumeroPositionComparator implements Comparator<String> {
		@Override
		public int compare(String no1, String no2) {
			Integer numero1 = null;
			boolean isNo1Number = true;
			Integer numero2 = null;
			boolean isNo2Number = true;
 
			try {
				numero1 = Integer.valueOf(no1);
			} catch (NumberFormatException e) {
				isNo1Number = false;
			}
 
			try {
				numero2 = Integer.valueOf(no2);
			} catch (NumberFormatException e) {
				isNo2Number = false;
			}
 
			if (isNo1Number && isNo2Number) {
				return numero1.compareTo(numero2);
			} else if (isNo1Number) {
				return 1;
			} else if (isNo2Number) {
				return -1;
			} else {
				return no1.compareTo(no2);
			}
		}
	}
En appliquant à mon sorter
(créé comme ceci : )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
private TableRowSorter<DefaultTableModel> sorter;
...
sorter = new TableRowSorter<DefaultTableModel>(model);
(La boucle for pour appliquer à toutes mes colonnes)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
		for (int k=0; k<numberCol; k++){
			sorter.setComparator(k, new NumeroPositionComparator());
		}
Donc, ça marche super sur les int, mais pour les floats ... Absolument pas Et je suis incapable d'adapter le code aux Floats ...

Voici une ligne exemple de mon tableau :
1 36 180.5 21.7 184 142 217 406.3 5.6 6497 184 6497

Je suis encore débutant en Java et j'ai quelques difficultés sur des trucs "simple" (surement des grosses lacunes dû à la vitesse à laquelle j'ai appris le langage ^^)

Merci à tous !

Zénome

(EDIT : Je suis sous Java 1.6 (si ça change quelque chose ))