Bonjour,

J'utilisa un JTable dans mon application.
Pour cela, je suis partit de l'exemple de Sun qui implémente un JTable et une classe de tri (Sorter) via un AbstractModel.

Pour que les tris fonctionnent, le modèle implémente une méthode qui retourne la classe des objets de la colonnes.
La classe de tris utilise cette méthode et définit le comparateur qui va bien pour cette classe.

Voici donc la méthode du Sorter qui recherche le comparateur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
protected Comparator getComparator(int column) 
	{
		Class columnType = tableModel.getColumnClass(column);
		Comparator comparator = (Comparator) columnComparators.get(columnType);
		if (comparator != null) 
		{
			return comparator;
		}
		if (Comparable.class.isAssignableFrom(columnType)) 
		{
			return COMPARABLE_COMAPRATOR;
		}
		return LEXICAL_COMPARATOR;
	}
En bleu, on fait appel à la méthode du modèle qui identifie la classe des objets de la colonne.
Tout cela fonctionne à la perfection, et si la classe des objets de la colonne est DATE, alors le comparateur de dates est utilisé.

Mon soucis c'est que je veux modifier l'affichage de la date dans mon tableau, et donc utiliser un SimpleDateFormat pour reformatter la présentation... Et cela me produit logiquement un résultat de type String.

Lorsque je passe mes nouvelles dates au tableau, le Sorter utilise alors un comparateur de chaines de caractères et non de Dates...
Ma question est donc de savoir comment implémenter un nouveau comparateur, de mon propre cru, qui permettrait de comparer mes chaines de caractères comme des Dates ?
Et, puisque j'ai plusieurs colonnes de chaines de caractères, mais une seule à identifier comme dates, vais-je pouvoir les distinguer pour appeler des comparateurs différents ? :s

Merci pour votre aide !