Bonjour,
j'ai lu diverses discussions et articles sur l'utilisation d'une JTable nécessitant un JScrollPane et j'en utilise sans problème depuis des années. Récemment je suis confronté à un problème que je ne m'explique pas.
J'ai une JTable dans une JInternalFrame. Je remplis ma JTable avec mes données et la vue du JScrollPane se positionne pour montrer la dernière ligne du tableau. Je voudrai que la position soit sur la première ligne. J'ai essayé plusieurs solutions mais je n'y arrive pas. Mon scrollbar vertical ne décolle pas du bas du tableau.
D'après ce que j'avais vu, l'appel à la méthode
table.scrollRectToVisible(new Rectangle(0, 0, maTable.getWidth(), maTable.getRowHeight()));
devrait afficher la première ligne mais en fait cette procédure ne fait pas le job contrairement à ce qu'affirme un message sur le sujet;
Un tour sur cette méthode montre qu'il s'agit d'une méthode de JComponent et qu'il est préférable d'utiliser celle correspondant au JViewport.
viewport = (JViewport)maTable.getParent()
ou
viewport = monJScrollPane.getViewport()
(le deux méthodes renvoient exactement le même viewport)
Mais
viewport.scrollRectToVisible(new Rectangle(0, 0, maTable.getWidth(), maTable.getRowHeight()));
ne fait pas le job non plus. Il semble que cela provienne du fait que le viewport n'est pas valide au moment de l'appel de procédure. Un appel à validate() ne résout pas le problème.
Une idée ?
Partager