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

2D Java Discussion :

Qui appelle paint() ??


Sujet :

2D Java

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut Qui appelle paint() ??
    Bonjour,

    J'ai un morceau de code qui affiche bêtement une image.
    Mais je voudrais bien savoir qui appelle paint()...
    Merci.
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    /*
     * This applet's code is the same in both 1.0 and 1.1.
     */
     
    import java.awt.*;
    import java.applet.Applet;
     
    /* 
     * This applet displays a single image twice,
     * once at its normal size and once much wider.
     */
     
    public class ImageDisplayer extends Applet
    {
        Image image;
     
        public void init()
        {
            image = getImage(getCodeBase(), "rocketship.gif");
        }
     
        public void paint(Graphics g)
        {
            //Draw image at its natural size first.
            g.drawImage(image, 0, 0, this); //85x62 image
     
            //Now draw the image scaled.
            g.drawImage(image, 90, 0, 300, 62, this);
        }
    }

  2. #2
    Membre confirmé
    Avatar de lejimi
    Homme Profil pro
    Écrivain public
    Inscrit en
    Mai 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Écrivain public
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2004
    Messages : 182
    Points : 483
    Points
    483
    Billets dans le blog
    2
    Par défaut
    Et bien personne me semble-t-il...

    Il y a une méthode paintComponent qui est appelée automatiquement chaque fois qu'un composant quelconque a besoin d'être "rafraîchi" (déplacement, redimensionnement...) C'est elle que tu dois redéfinir en y mettant le code qui dessine l'image.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Ben manifestement, ça fonctionne tel quel...: -/

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 847
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Par défaut, probablement le repaint manager de l'AWT/Swing au moment ou l'Event Dispatch Thread a déterminé que c'était le moment de repeindre l'interface (et si il est déterminé que ce composant a besoin d'être repeint). Egalement la thread d'impression dans les composants disposant d'une méthode permettant de les imprimer (encore qu'en général ils appellent plutôt print()).

    Tu peux aussi l'appeler manuellement toi-même pour rendre ton composant ou applet dans une image ou tout autre Graphics (ex: quand tu imprimes via un Printable bien à toi).

  5. #5
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    Hello.

    C'est paint() pour awt, et paintComponent() pour Swing, non?

    Et une applet, c'est de l'awt.

    Donc paint() est appelé automatiquement.

    A+

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Glob
    C'est paint() pour awt, et paintComponent() pour Swing, non?
    Pas tout à fait... paint() est utilisé dans les deux cas.
    La seul différence c'est que le paint() de Swing appelle trois autres méthodes pour l'affichage : paintComponent(), paintBorder(), et paintChildren().

    donc lorsqu'on veut modifier le rendu du fond d'un composant Swing, il est préférable de redéfinir seulement paintComponent()...


    Citation Envoyé par Glob
    Et une applet, c'est de l'awt.
    Applet -> AWT
    JApplet -> Swing

    Citation Envoyé par Glob
    Donc paint() est appelé automatiquement.
    Oui comme bouye l'as dit c'est l'Event Dispatch Thread qui s'occupe d'appeller paint() lorsque c'est neccessaire, mais on peut bien sûr forcer ce comportement via la méthode repaint()...

    a++

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Merci, ça a effectivement l'air d'être ça.

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Oui comme bouye l'as dit c'est l'Event Dispatch Thread qui s'occupe d'appeller paint() lorsque c'est neccessaire, mais on peut bien sûr forcer ce comportement via la méthode repaint()...
    Et plus precisement, en Swing, c'est le RepaintManager qui appelle les methodes paint(). Il est possible de surcharger le RepaintManager pour faire des tas de choses assez amusantes. J'avais par exemple realise un RepaintManager qui affichait l'application en 3D (avec des lunettes rouge/bleu). On peut aussi faire un RepaintManager qui detecte si des operations ont lieu en dehors de l'EDT (cf http://www.clientjava.com/blog/2004/08/20/1093059428000.html).

  9. #9
    Membre actif Avatar de schneidb
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 236
    Points : 240
    Points
    240
    Par défaut
    Citation Envoyé par Gfx
    http://www.clientjava.com/blog/2004/08/20/1093059428000.html).
    ton lien est hs dommage

    EDIT: j'ai rien dit y'avait une parenthèse de trop, chui pas bien reveillé

    http://www.clientjava.com/blog/2004/08/20/1093059428000.html

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connaitre le processus qui appelle une fonction API
    Par RazielReaver dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 28/05/2006, 13h56
  2. Shell qui appelle un xterm et lance des commandes
    Par Krispy dans le forum Linux
    Réponses: 6
    Dernier message: 09/03/2006, 17h35
  3. [PL/SQL] Trigger qui appelle une procédure
    Par alex6891 dans le forum Oracle
    Réponses: 5
    Dernier message: 19/01/2006, 09h01
  4. [JTable] [FocusListener] Savoir le composant qui appelle
    Par IvanPopov dans le forum Composants
    Réponses: 7
    Dernier message: 27/07/2005, 13h55
  5. Procedures stockées qui appellent un autre ?
    Par Tchinkatchuk dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 09/05/2005, 09h30

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