J'ai une JTable comportant 26 colonnes dans un JScrollPane pour présenter un tableau de chiffre d'affaire.
Les colonnes sont :
- N° client
- Nom du client
- CA janv 2014
- CA fev 2014
.
.
.
- CA dec 2015
Pour bien voir le contenu des colonnes, j'ai mis setAutoResizeMode(TableExpress.AUTO_RESIZE_OFF)
Pour bloquer les noms des clients à gauche (comme dans Excel) quand
on va consulter le CA fin 2015 à droite, j'ai découpé la JTable en deux :
- JTable "fixe" avec les colonnes N° et nom client placée dans le RowHeaderView du JScrollPane
- JTable "centrale" avec toutes les colonnes de CA placée dans le JViewport du JScrollPane
A ce stade, cela marche très bien : quand on se déplace vers la droite,
on continue à bien voir le nom des clients et la synchronisation se fait aussi verticalement.
Problème :
L'utilisateur a besoin de classer les clients par CA croissant pour, par exemple, le mois de mars 2015
j'ai donc ajouté : centrale.setAutoCreateRowSorter(true)
ça marche pour la JTable "centrale" mais le classement n'est pas synchronisé avec la JTable "fixe" !
J'ai bien essayé de truander le classement de la JTable "fixe" en reportant le RowSorter de la JTable "centrale" :
fixed.setRowSorter(centrale.getRowSorter());
ça marchouille plus ou moins au début et puis après,
ça merdouille complètement quand l'utilisateur veut reclasser les clients en cliquant sur l'en-tête de la colonne dans la JTable "fixe"
En résumé :
Comment faire pour synchroniser le classement dans deux JTables comportant le même nombre de lignes ?
Partager