Bonjour,

Je developpe avec matisse, l'éditeur graphique de Netbeans.

j'ai un JTable contenant comme colone : Date, Nom du fournisseur, reference, designation etc...

La date est au format jj/mm/aa
Le tableau est remplit avec une requette SQL qui recupere les champs, les mets dans un tableau d'objets qui ensuite est ajouté au model.

J'ai créer un rowSorter automatique (en cochant un truc dans netbeans) : l'équivalent de monTableau.autoCreateRowSorter(true);

Quand je clique sur le nom d'une collone : le tri fonctionne très bien pour les Integer, Double ou Strings... mais pour les dates il croit que c'est un String du coup ca tri mal.

J'ai déja rechercher sur le forum mais je n'arrive pas à adapter les codes que j'ai trouver à mon code, comment faire pour definir le type d'une colone de mon jTable ? (ici un type Date ou GregorianCalendar).

Voici le model que j'utilise pour ma jTable

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
//CLASSE MODÈLE PERSONNALISÉE
	class NonEditableDefaultTableModel extends AbstractTableModel{
 
		private Object[][] data;
		private String[] title;
 
		/**
                 * Constructeur
                 * @param data
                 * @param title
                 */
		public NonEditableDefaultTableModel(Object[][] data, String[] title){
			this.data = data;
			this.title = title;
		}
 
                public NonEditableDefaultTableModel(String[] title){
 
			this.title = title;
		}
 
		/**
                 * Retourne le nombre de colonnes
                 */
		public int getColumnCount() {
			return this.title.length;
		}
 
		/**
                 * Retourne le nombre de lignes
                 */
		public int getRowCount() {
			return this.data.length;
		}
 
                /**
                * Retourne le titre de la colonne à l'indice spécifé
                */
                public String getColumnName(int col) {
                  return this.title[col];
                }
 
 
		/**
                 * Retourne la valeur à l'emplacement spécifié
                 */
		public Object getValueAt(int row, int col) {
			return this.data[row][col];
		}
 
                /**
                 * Défini la valeur à l'emplacement spécifié
                 */
		public void setValueAt(Object value, int row, int col) {
			//On interdit la modification sur certaine colonne !
			if(!this.getColumnName(col).equals("Age") && !this.getColumnName(col).equals("Suppression"))
				this.data[row][col] = value;
		}
 
		/**
                * Retourne la classe de la donnée de la colonne
                * @param col
                */
		public Class getColumnClass(int col){
			//On retourne le type de la cellule à la colonne demandée
			//On se moque de la ligne puisque les données sur chaque ligne sont les mêmes
			//On choisit donc la première ligne
			return this.data[0][col].getClass();
 
		}
 
		/**
                 * Méthode permettant de retirer une ligne du tableau
                 * @param position
                 */
		public void removeRow(int position){
 
			int indice = 0, indice2 = 0, nbRow = this.getRowCount()-1, nbCol = this.getColumnCount();
			Object temp[][] = new Object[nbRow][nbCol];
 
			for(Object[] value : this.data){
				if(indice != position){
					temp[indice2++] = value;
				}
				indice++;
			}
			this.data = temp;
			temp = null;
			//Cette méthode permet d'avertir le tableau que les données ont été modifiées
			//Ce qui permet une mise à jours complète du tableau
			this.fireTableDataChanged();
 
		}
 
		/**
                 * Permet d'ajouter une ligne dans le tableau
                 * @param data
                 */
		public void addRow(Object[] data){
 
			int indice = 0, nbRow = this.getRowCount(), nbCol = this.getColumnCount();
 
			Object temp[][] = this.data;
			this.data = new Object[nbRow+1][nbCol];
 
			for(Object[] value : temp)
				this.data[indice++] = value;
 
 
			this.data[indice] = data;
			temp = null;
			//Cette méthode permet d'avertir le tableau que les données ont été modifiées
			//Ce qui permet une mise à jours complète du tableau
			this.fireTableDataChanged();
 
                }
 
	}
Merci d'avance