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 :

methode paint jamais appeller.


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut methode paint jamais appeller.
    Bonjour tous, j'ai fais une IHM héritant d'une JDialog. Je surcharge la méthode paintComponents de JDialog dans laquelle je charge une image.
    Mais cette méthode n'est jamais appellé, même si je fais un repaint().

    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
     
    public class JMessageBox extends JDialog implements ActionListener
    {
    @Override
    	public void paintComponents(Graphics g) 
    	{
     
     
    		super.paintComponents(g);
     
    		java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
     
     
     
    		_img = toolkit.getImage("./JComponents/error_icon.gif");
     
    		g.drawImage(_img,_img.getWidth(this), _img.getHeight(this), this );
     
    	} 
    }
    Que puis je faire?
    Merci

  2. #2
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    essaye avec paintAll(g)

  3. #3
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    ca fait pareil. J'ai mis un point d'arret dans paintAll. Et il n'y passe jamais, même si je fait un repaint().

    Cependant avec paint() ca marche.
    Mais, si je ferme ma fenètre (setVisible(false)) et que par la suite je la refait aparaitre des composants label ne sont plus visible .

    Par ailleur, j'aimerais bien comprendre pourquoi avec paintComponents et paintAll ca ne marche pas.

  4. #4
    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
    C'est paintComponent() sans 's' a la fin. Aussi, ne fais pas le getImage() dans le paint() sinon tu vas charger l'image a chaque dessin de la fenetre et tes performances vont etre rapidement insupportables.

    Note pour tout le monde : quand on surcharge paintComponent() il est de bon aloi de ne pas utiliser la visibilite public mais protected. Il est inutile d'exposer une methode supplementaire qui est a l'origine masquee.

  5. #5
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    chez moi paintComponents prend un s, sinon ca me genere une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    @Override
    	public void paintComponents(Graphics g) {
    		// TODO Auto-generated method stub
    		super.paintComponents(g);
    	}
    et si je met la dessin de mon image la dedans ca ne marche pas. Et même si je passe la visibilité d'une de ces méthode a protected, eclipse me crie dessus et je ne peu compiler (erreur can't reduce the visibility of this method).

  6. #6
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    JComponent --> paintComponent
    Container -->paintComponents

    et tu ne peut pas reduire la visibilite d'une methode que tu redefini

  7. #7
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    et tu ne peut pas reduire la visibilite d'une methode que tu redefini
    normal.

    J'herite de jdialog, mon but est de faire une messageboxBox.
    Mais alors pourquoi le programme ne passe jamais dans paintComponents?
    Je suis obliger si je veux que le dessin de l'image se fasse de passer par paint(). Et effectivement niveau performance c'est pas terrible du tous...

  8. #8
    Membre éprouvé Avatar de yakanet
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Par défaut
    paintComponants permet de dessiner les composants qui sont a l'interieur de ton container, si tu n'as pas de composants à l'interieur, tu ne passeras jamais par celui ci...

  9. #9
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    J'utilise un Container pour placer mes composants, cela viendrai de ca alors. Je vais essayer sans utiliser de Container.

    Et pourquoi lorsque je reaffiche ma messageBox les labels ne reapparaissent pas?

  10. #10
    Membre éprouvé Avatar de yakanet
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Par défaut
    tu as du oublier de faire l'appel à super().paintComponant()
    qui redessine le composant, puis ensuite après cette ligne tu peux faire tes modifications. Considère que tu pains un tableau, tu ne pains pas les détails du premier plan avant de peindre le fond. Il faut y aller couche par couche.

Discussions similaires

  1. Methode @PostConstruct jamais appelée
    Par rushtakn dans le forum JSF
    Réponses: 1
    Dernier message: 03/07/2009, 16h05
  2. [PB] Methode execute non appelée
    Par CPI_en_mousse dans le forum Struts 1
    Réponses: 8
    Dernier message: 16/05/2007, 16h15
  3. [JSF] Action methods jamais appelées
    Par mauvais_karma dans le forum JSF
    Réponses: 4
    Dernier message: 15/05/2007, 16h05
  4. Réponses: 7
    Dernier message: 19/04/2007, 18h54
  5. [ Struts ] Erreur : l'action n'est jamais appelé
    Par romain3395 dans le forum Struts 1
    Réponses: 3
    Dernier message: 25/06/2004, 14h59

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