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 :
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.
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 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
Partager