IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

lenteur galerie images


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2005
    Messages : 97
    Points : 78
    Points
    78
    Par défaut lenteur galerie images
    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

  2. #2
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

Discussions similaires

  1. Enregistrement photo galerie image
    Par bthorent dans le forum Android
    Réponses: 7
    Dernier message: 12/11/2010, 15h55
  2. Galerie image: Afficher/cacher des div
    Par lemirandais dans le forum jQuery
    Réponses: 1
    Dernier message: 09/09/2009, 08h49
  3. Galerie image ne s'affichant que sur IE
    Par matimat2k4 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/05/2008, 17h47
  4. [MySQL] Galerie image PHP avec Base de Donnée
    Par choulaone dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/05/2007, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo