Salut,
Typiquement : si a chaque fois que tu clic sur une scrollbar le contenu total du composant à l'intérieur du JScrollPane est redessiné, alors tu obtient de plus en plus de lenteurs lorsque ce composant contient de plus en plus d'image (ou texte ou autre). Il faut effectivement ne redessiner que le contenu qui change :
scrollpane.repaint(scrollpane.getViewport().getViewRect());
Je le cite de mémoire, aussi te faudra t-il vérifier que cela correspond bien a la situtation.
Cela dit, Java utilise "naturellement" ce concept. Aussi tu as certainement du code qui appel (explicitement, alors c'est facile, ou implicitement, alors c'est + duraille) un repaint() [total donc]. C'est cela que tu doit chercher ! Bon courage car ce n'est pas forcement évident à trouver.
Tu n'as pas à connaitre le fonctionnement de paint(Rectangle r), Java redessine seulement la partie spécifiée par ton argument. Cela suffit ! Tu peut naturellement redefinir cette méthode si tu en as besoin, mais je ne pense pas que ce soit le cas, enfin bon, c'est toi qui connait ton projet 
Il y a de grande chance que cela soit à l'origine de ces lenteurs, car c'est un comportement typique, surtout si tu n'a pas ces lenteurs lorsqu'il y a peu d'image dans ton scrollpane !
Peut-être aussi appel tu inutilement repaint(), ou trop souvent ! Ou bien encore un revalidate() qui est assez lourd !
Cela dit, ce n'est peut-être pas ça.
En espérant que cela puisse t'aider.
Partager