Salut,

Envoyé par
Ceubex
J'aimerais que cela soit fait à l'avance lors de l'affichage de mon JTable sur la première colonne.
Il suffit d'appeler explicitement la méthode toggleSortOrder() de ton RowSorter :
1 2
| table.setAutoCreateRowSorter(true);
table.getRowSorter().toggleSortOrder(0); // 0 == première colonne |

Envoyé par
titou31000
pour ma part j'ai une question qui est un peu semblable, j'ai crée une JTable avec des lignes dedans et je souhaite créer un filtre sur le JTable. Quand l'utilisateur va taper "vi" seuls les noms avec l'expression régulière "vi" restera!!
Il suffit de rajouter un filtre sur le RowSorter, soit en implémentant toi même un RowFilter, soit en utilisant le regexFilter. Par exemple :
1 2
| TableRowSorter<?> sorter = (TableRowSorter<?>)table.getRowSorter();
sorter.setRowFilter(RowFilter.regexFilter("vi")); |
Attention, comme il s'agit d'une expression régulière, les caractères spéciaux vont être interprétés. Ce n'est pas forcément souhaitable pour une saisie utilisateur.
Pour éviter cela il faut utiliser Pattern.quote() :
RowFilter.regexFilter(Pattern.quote("vi"))
A noter que tu peux passer le regexp en "case-insensitive" en rajoutant "(?i)" devant 
RowFilter.regexFilter("(?i)" + Pattern.quote("vi"))
Enfin, tu peux limiter le filtres à certaines colonnes, en les précisant en paramètres :
1 2
| // filtre seulement sur les deux premières colonnes
RowFilter.regexFilter("(?i)" + Pattern.quote("vi"), 0, 1) |
a++
Partager