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 :

petite question sur repaint()


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut petite question sur repaint()
    Bonjour,
    Je me sers d'un objet graphics pour dessiner plusieur images.Par l'action de certains boutons je dessine un cercle sur une des images.Au depart j'ai utilise repaint(int,int,int,int) pour redessiner l'espace que j'avai besoin de redessiner.
    Le probleme est que le resultat obtenu est bon(j'obtient un cercle sur une des images) mais si je passe une fenetre(du style IE ou n'importe quoi d'autres) sur ma Jframe ,tout s'efface sauf le cercle que je viens de dessiner.
    Alors que si j'utilise repaint() ,donc je redessine tout(images + cercles) je n'ai pas de probleme d'affichage.
    Avez vous une idee?

    Et je voudrais aussi savoir s'il etait possible d'afficher une infobulle sous mon cercle??

  2. #2
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    Il faudrait savoir si tu travailles avec swing.

    De toutes façons, tout l'affichage est géré par la méthode paint ; avec swing il y a simplement quelques sous ensembles, comme paintComponent, par exemple.

    Lorsqu'une fenêtre passe devant ton appli, puis que ton appli réapparait, le système sous jacent appelle la méthode paint, pour que ton composant soit redessiné. S'il manque des choses à ton dessin, c'est que la méthode paint ne dessine pas tout.

    Il faut donc que tu vérifies tous tes appels à des graphismes, et vérifier qu'ils sont bien intégrés dans la méthode paint, et ses partenaires sous swing.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut
    Merci pour ta reponse.
    En fait au debut de l'application j'ai pas ce probleme.
    Mais quand l'utilisateur clique sur un boutton, un cercle se dessine.
    Donc je voudrais qu'il dessine que le cercle et pas les autres composants.
    Car dans mon graphics je dessine plein d'image ,le fait de redessiner tout le graphics va me faire perdre du temps et de la memoire,non??

  4. #4
    Membre éclairé

    Profil pro
    Coach Agile
    Inscrit en
    Décembre 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach Agile

    Informations forums :
    Inscription : Décembre 2005
    Messages : 316
    Par défaut
    Pour les perf, je ne sais pas, mais lorsque l’utilisateur appui sur son bouton, en plus d’afficher ton cercle, il va falloir que tu stocke quelque part les infos nécessaire pour redessiner ton cercle via la fonction paintComponent().
    Ainsi, lorsqu’elle est appelée par le système, l’ensemble de tes éléments (initiaux + ajoutés par l’utilisateur) pourront être redessinés.
    Chris.

  5. #5
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    Citation Envoyé par skwi6
    Car dans mon graphics je dessine plein d'image ,le fait de redessiner tout le graphics va me faire perdre du temps et de la memoire,non??
    Oui et non, cela dépend comment tu gères les choses.

    Ce qu'il y a d'incontournable, c'est que tout doit se passer dans les appels types paint, sinon tu risques d'avoir des problèmes chaque fois qu'une fenêtre passera devant la tienne.

    Quand je dis incoutournable, pas tout à fait : si tu programmes selon les techniques mode jeu, en mode plein écran, alors tu peux te débrouiller autrement. Mais ça pose d'autres problèmes.

    Habituellement, en mode fenêtré, ce qu'on fait, est qu'on redessine tout le clip indiqué dans le graphics passé en paramètre des paint, en optimisant modèle et vue pour que, lors de l'affichage, il y ait le minimum de calculs à faire. On pourrait être plus finauds, et détecter, comme dans ton cas, qu'il ne faut redessiner que le cercle, mais l'expérience tend à montrer que cela revient à couper les cheveux en 4, et que l'on de bien meilleurs résultats par l'optimisation citée ci-dessus.

Discussions similaires

  1. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 09h40
  2. [Visuel XP] Petite question sur le theme XP...
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 12
    Dernier message: 20/01/2005, 14h41
  3. petite question sur le composant IBX ...
    Par vbcasimir dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/01/2005, 10h33
  4. Réponses: 3
    Dernier message: 08/12/2004, 13h58
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

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