Bonjour,

J'ai une application qui remplit une JTable en fonction de diverses données.
Cette table est triable lorsque l'on clique sur le nmo de la colonne.
Seul problème, c'est que le tri se fait "alphanumériquement" sur les colonnes possédant des données de type Integer.

Je me suis renseigné sur le site d'Oracle et sur ce forum, mais je n'ai pas réussi à trouver mon bonheur.

Voici mon bout de code :

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
donnees = remplissage();
 
		DefaultTableModel model = new DefaultTableModel(donnees, titreColonnes) {		
			public boolean isCellEditable(int row, int column) {
				return false; //aucune cellule editable
			}
		};
 
		TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
		JTable table = new JTable(model);
		System.out.println(table.getColumnClass(3));
		System.out.println(table.getColumnClass(2));
		table.setRowSorter(sorter);
		table.setPreferredScrollableViewportSize(new Dimension(640, 200));
		table.setFillsViewportHeight(true);

C'est ma 3° colonne qui possède les int et qui renvoie Ojbet en type de classe lorsque je fait mon system.out.

Remplissage est une fonction :

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
private Object[][] remplissage(){
 
		Object[][] liste = new Object[elements.size()][4];
 
		for(int i = 0; i < elements.size(); i++){
 
			liste[i][0] = elements.get(i).get_code_msgid();
			liste[i][1] = elements.get(i).get_code_user();
			liste[i][2] = (Integer) elements.get(i).get_temps();
 
			if(elements.get(i).get_requete_insert().equals("")){
				liste[i][3] = elements.get(i).get_date_select();
			}
			else if(elements.get(i).get_requete_select().equals("")){
				liste[i][3] = elements.get(i).get_date_insert();
			}
			else{liste[i][3] = elements.get(i).get_date_insert();}//??
 
 
		}
 
		return liste;
 
	}