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 éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    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 expérimenté
    Avatar de lejimi
    Homme Profil pro
    Écrivain public
    Inscrit en
    Mai 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Cher (Centre)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 182
    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.
    Gloire à qui n'ayant pas d'idéal sacro-saint
    Se borne à ne pas trop emmerder ses voisins.


    Mon tutoriel pour débuter avec Inkscape
    D'autres tutoriels intéressants dans la rubrique Open Source
    Et n'oubliez pas la FAQ Open Source !

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    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 899
    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 899
    Billets dans le blog
    54
    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).
    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 chevronné
    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 : 48
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    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
    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
    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 éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

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

  8. #8
    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
    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 expérimenté 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
    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