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 :
En appliquant à mon 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
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); } } }
(créé comme ceci : )
(La boucle for pour appliquer à toutes mes colonnes)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 private TableRowSorter<DefaultTableModel> sorter; ... sorter = new TableRowSorter<DefaultTableModel>(model);
Donc, ça marche super sur les int, mais pour les floats ... Absolument pas
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()); }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))






Répondre avec citation
Partager