Bonjour,

Je réalise une galerie d'image et je rencontre un problème de lenteur lorsque que je veux visionner un grand nombre d'images ou faire une sélection multiple.

video de mon problème ici


Je dessine des miniatures d'images dans un jpanel (elles ne sont pas recalculées à chaque fois à chaque repaint() mais sauvées dans un attribut de ma classe Image).

voici le code de ma fonction paint de mon JPanel :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
		for (Image im : model.getListesImages())
		{	
 
			PlanarImage scale = null;
			if (updateScale || im.getSaveScale()==null)
			{
			scale = src.util.UtilTraitementImage.createScale(im.getImageIcon(),Variables.IMAGE_SMALL_SIZE-ViewImages.ZOOM);
			im.setSaveScale(scale);
			}
			else
			scale = im.getSaveScale();
 
			Integer imageHeight = scale.getAsBufferedImage().getHeight();
			Integer imageWidth = scale.getAsBufferedImage().getWidth();
				g.drawImage(scale.getAsBufferedImage(),im.getX(),im.getY(),null);
 
			drawSelectedImage(g, im);
		}
Je pense que mon JScrollPane à chaque fois qu'il que je descend ou monte la scrollBar doit appeler la fonction paint pour tout mon panel.
Je pense qu'il faut que j'utilise la fonction paint(int x, int y,int width, int height) mais je connais pas son fonctionnement ( appelle t-elle la fonction paint, peut-on la redéfinir)

Sinon pour la sélection multiple je calcule la partie de mon panel à rafraichir j'utilise la fonction paint(int x, int y,int width, int height) mais ça n'a pas l'air d'optimiser bcp.

Avez-vous une idée?

Merci d'avance