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 :

[Swing]Fond blanc


Sujet :

AWT/Swing Java

  1. #21
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    alors si on crée un composant avec un background on ne peux pas le mettre à jour?!?

    ou alors utiliser la solution pas jolie de dessiner un rectangle... c'est pas super tout ca..
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

  2. #22
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    Je n'ai pas bien suivi le probleme. Mais je pourrais ajouter un avis que je pense décisif.
    Il me semble avoir compris pourquoi on te dis de ne pas surcharger paintComponent(). Toutefois, si tu veut quand même le surcharger, je te conseillerai de mettre en premiere ligne de ton paintComponent() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private ... paintComponent() {
    super.paintComponent(); /* ou super(); (je ne me souviens plus) */
    // ......
    // ......
    Comme ça, même si tu surcharge cette méthode, elle appelera toujours la méthode mère, et pourra rafraichir tes composants.

    Si je n'ai pas compris le problème, j'en suis désolé et je relirai plus profondément.

    J'espère t'avoir aidé... ++
    Goah Sha Kree

  3. #23
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 128
    Points : 151
    Points
    151
    Par défaut
    Effectivement, idée intéressante, à tester !

    PS. C'est bien super.paintComponent(). super() est le constructeur par défaut de la classe mère .

  4. #24
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    la on est ok je suis d'accord, mais la méthode paintComponent mère fait quoi de spécial pour dessiner le background?
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

  5. #25
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    Citation Envoyé par Marcin
    PS. C'est bien super.paintComponent(). super() est le constructeur par défaut de la classe mère .
    Oui oui, il me semblai bien aussi, mais je ne savais plus si le super(); ne referencais pas automatiquement la méthode mère associé.
    Mais effectivement, il me semble bien que c'est super.paintComponent(); (J'était pas sûr à 100%, c'est pour cela que je l'ai précisé...)

    Citation Envoyé par pollux007
    la on est ok je suis d'accord, mais la méthode paintComponent mère fait quoi de spécial pour dessiner le background?
    Ben, en fait j'en sais rien !!! (si ce n'est qu'elle procède à des initialisations interne à Java...)
    La méthode mère est une méthode de l'API Java, donc on ne peut pas trop savoir ce que ça fait si ce n'est :

    Citation Envoyé par java.sun.com
    paintComponent

    protected void paintComponent(Graphics g)

    Calls the UI delegate's paint method, if the UI delegate is non-null. We pass the delegate a copy of the Graphics object to protect the rest of the paint code from irrevocable changes (for example, Graphics.translate).

    If you override this in a subclass you should not make permanent changes to the passed in Graphics. For example, you should not alter the clip Rectangle or modify the transform. If you need to do these operations you may find it easier to create a new Graphics from the passed in Graphics and manipulate it. Further, if you do not invoker super's implementation you must honor the opaque property, that is if this component is opaque, you must completely fill in the background in a non-opaque color. If you do not honor the opaque property you will likely see visual artifacts.

    The passed in Graphics object might have a transform other than the identify transform installed on it. In this case, you might get unexpected results if you cumulatively apply another transform.

    Parameters:
    g - the Graphics object to protect
    See Also:
    paint(java.awt.Graphics), ComponentUI
    Ce qui n'empeche qu'il faut l'appeler...
    En fait je pense qu'il est souvent nécessaire d'appeler la méthode mère quand tu surcharge une méthode. Il n'en est pas le cas, si tu veut changer le comportement en profondeur, ou si tu sais faire les initialisation autrement.

    Enfin, il reste à souligner, que pour le super.paintComponent();, il faut lui passer en paramètre l'objet de classe Graphics (super.paintComponent(g);)...
    Goah Sha Kree

  6. #26
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 128
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par pollux007
    la on est ok je suis d'accord, mais la méthode paintComponent mère fait quoi de spécial pour dessiner le background?
    Ben avec un peu de chance elle se chargera de faire le dessin relatif au background. Essaie !
    De toute manière, je pense qu'il n'y a rien de magique là dedans, à un moment l'API doit bien utiliser un mécanisme semblable au remplissage du rectangle de tout à l'heure...

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Pour savoir ce que fait l'API, consultez le fichier src.zip de votre JDK qui contient le code source de l'API publique de Java. On y trouve notamment tout le code source de Swing a quelques details pres (sans importance).
    Romain Guy
    Android - Mon livre - Mon blog

  8. #28
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 128
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par jak0
    Oui oui, il me semblai bien aussi, mais je ne savais plus si le super(); ne referencais pas automatiquement la méthode mère associé.
    En fait super réferencie la classe mère. A partir de là, super() est le constructeur par défaut, super(arg1) est un constructeur valué, super.methode1() fait appel à la méthode1 de la classe mère etc.

  9. #29
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    Citation Envoyé par Marcin
    Citation Envoyé par jak0
    Oui oui, il me semblai bien aussi, mais je ne savais plus si le super(); ne referencais pas automatiquement la méthode mère associé.
    En fait super réferencie la classe mère. A partir de là, super() est le constructeur par défaut, super(arg1) est un constructeur valué, super.methode1() fait appel à la méthode1 de la classe mère etc.
    Oui oui, merci, je sais bien, c'était juste un trou de mémoire passager, je ne voulais simplement pas bloqué notre ami en lui fournissant une information partiellement erroné
    Goah Sha Kree

  10. #30
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    pour ce qui est de super je connais bien merci, mon seul problèmes concerne le background...

    je vous redis tout ca bientot car pour l'instant je n'ai ni le temps ni l'accès à mon projet
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

  11. #31
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    Citation Envoyé par pollux007
    pour ce qui est de super je connais bien merci, mon seul problèmes concerne le background...
    Oui mais je pense que le background n'est pas appliqué parce que pour cela, la super méthode paintComponent doit être exécuté, et qu'elle ne l'est pas puisque tu la surcharge et que donc c'est ta méthode qui est appelé...
    Goah Sha Kree

  12. #32
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    Trouvé dans un exemple de Sun :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Paint background if we're opaque.
                if (isOpaque()) {
                    g.setColor(getBackground());
                    g.fillRect(0, 0, getWidth(), getHeight());
                }
    Donc il faut bien dessiner un rectangle!... Mouais... Bof bof...
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Tu n'as pas besoin de le faire si tu appelles super.paintComponent(Graphics g) et que le super component est opaque et dessine son fond (comme un JPanel).
    Romain Guy
    Android - Mon livre - Mon blog

  14. #34
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    J'ai essayé mais ca ne fonctionne pas...

    J'ai mis opaque et background en white et appel à super.paintComponent mais aucun background
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Montre-nous ton code. Je viens tout juste d'essayer et ca marche parfaitement.
    Romain Guy
    Android - Mon livre - Mon blog

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/04/2008, 18h44
  2. [Vista]Faire des boites de dialogue a fond blanc ?
    Par kedare dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/03/2008, 01h19
  3. iframe sous I7, fond blanc
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 24/08/2007, 16h03
  4. Enlever le fond blanc
    Par despe59 dans le forum Flash
    Réponses: 7
    Dernier message: 20/06/2006, 18h06
  5. [HTML][CSS][Facile] Imprimer en un fond blanc
    Par tails dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 25/02/2006, 20h52

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