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 :

nombre d'appels de paint


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Par défaut nombre d'appels de paint
    Bonjour,

    pour personnaliser mes affichages, et entre autres coller des textures de fonds dans mes JPanel , j'ai redéfini la méthode paintComponent. Cependant je trouve que l'affichage est lent. Alors j'ai eu l'idée de compter le nombre d'appels de la méthode paintComponent comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void paintComponent(Graphics g){
             super.paintComponent(g);
             System.out.println("appel de paint "+ i);
             i++;
      //autres commandes   
     
    }
    Si j' exécute tel quel (via une classe test bien évidemment), je constate qu'il n'y a qu'un seul appel de paintComponent.
    Maintenant si je rajoute une commande simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void paintComponent(Graphics g){
             super.paintComponent(g);
             System.out.println("appel de paint");
             i++;
               g.drawImage(ImArPlan,0,0,this);
     
    }
    Où ImArPlan est un fond vert tout simple.
    Le nombre d'appel de la méthode devient variable, et en moyenne il dépasse les 250!!

    Quelqu' un peut-il m'expliquer la raison d'un si grand nombre d'appel?


    Merci d'avance,
    Akhan

  2. #2
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Essaye en mettant null à la place de this dans l'appel drawImage().

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Par défaut
    Désolé d'avoir été si long a répondre.

    Effectivement cela réduit significativement le nombre d'appels.
    Cependant maintenant mes textures ne s'affichent plus , a moins que je minimise puis restaure ma fenetre. Dans ce cas tout s'affiche d'un coup (ou presque...)



    Akhan

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 905
    Billets dans le blog
    54
    Par défaut
    Ne charge pas tes textures avec Toolkit ; utilises plutot ImageIcon ou ImageIO.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 43
    Par défaut
    Citation Envoyé par Gfx
    Essaye en mettant null à la place de this dans l'appel drawImage().
    A quoi sert ce ImageObserver ? Quand faut-il passer null plutôt qu'un objet ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Par défaut
    J'ai un probleme avec les ImagesIcones, c'est que ce type n'est pas accepté comme paramètre de la fonction drawImage() (Je m'en doutais un peu ). Et je n'ai pas trouvé l'équivalent pour les ImagesIcones.

    Une suggestion ?

    Merci d'avance.
    Akhan

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    tu as une méthode getImage dans la classe ImageIcon...

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/12/2009, 18h08
  2. Chaine d'appel de paint(), java.awt
    Par Cbonniot dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 22/12/2009, 11h12
  3. Nombre d'appel de fonction
    Par argon dans le forum C
    Réponses: 7
    Dernier message: 02/05/2007, 08h32
  4. [Outils][C#/API Tapi] Y a-t-il une gestion du nombre des appels ?
    Par andreaslecousin dans le forum EDI/Outils
    Réponses: 7
    Dernier message: 16/03/2007, 15h08
  5. Réponses: 3
    Dernier message: 08/09/2006, 12h35

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