[JTable] Problème avec défilement de la scrollbar avec molette souris
Bonsoir,
J'ai un petit problème :
J'ai crée une JTable dont on peut sélectionner une ligne à la fois (cela met à jour une deuxième table), cette JTable est dans un JScrollPane.
J'ai ajouté un mouseListener sur le JScrollPane afin de "faire défiler" les éléments de la JTable et repositionner le contenu de la table. Là, pas de problème. Par contre, lorsque j'utilise la molette de la souris pour faire défiler le contenu de la table puis que je sélectionne une ligne alors l'affichage part en sucette, des lignes de la JTable se retrouve à l'extérieur de la JTable et la scrollbar revient à la ligne précédemment sélectionnée.
Un exemple pour être plus concret :
- Je sélectionne la première ligne de la JTable
- Je fais défiler la scrollbar avec la molette de la souris pour arriver à la dernière ligne de la JTable
- Je sélectionne la dernière ligne
- L'affichage du panel est parasité par des lignes de la JTable qui apparaisse au dessus de la JTable
- La scrollbar revient à sa position précédente.
En fait, c'est comme si le fait de sélectionner une autre ligne décalait vers le haut (dans cet exemple) certaines lignes de la JTable.
Que dois-je faire pour que le viewport soit mis à jour avec le défilement de la molette (addMouseWheelListener mais sur quel composant et comment ?) ?
Merci d'avance
[JTable] Problème avec défilement de la scrollbar avec molette souris
Le mouseListener sert à actualiser le viewport :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
/** Dernière position de la ScrollBar */
private Point lastScrollPanePos = new Point(0, 0);
....
maScrollPane = new JScrollPane() {
public void paint(Graphics pGraph) {
if (maScrollPane != null) {
maScrollPane.getViewport().setViewPosition(lastScrollPanePos);
}
super.paint(pGraph);
}
};
maScrollPane.getVerticalScrollBar().addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent pEvent) {
lastScrollPanePos = maScrollPane.getViewport().getViewPosition();
}
});
maScrollPane.setViewportView(maTable); |
[JTable] Problème avec défilement de la scrollbar avec molette souris
J'ai supprimé le mouseListener de la JScrollbar et tout marche : l'actualisation avec la clic de la souris et celui avec la molette.
Apparemment, c'était ce mouseListener qui parasitait l'affichage (?)