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 :

[debutant][swing] pb dans un paintComponent


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 12
    Points
    12
    Par défaut [Résolu][debutant][swing] pb dans un paintComponent
    bonsoir!

    et voila j'ai un pb dans un JLabel : j'utilise le double buffering, mais j'effectue aussi des modification que je souhaiterais temporaires sur l'image. Ex: j'inscris temporairement du texte dans mon JPanel. Alors ce que je fais c'est que pour les modifs permanentes j'ecris dans le buffer, pour les temporaires je modifie le Graphics this.getGraphics(). A l'affichage ça le fait le problème c'est au niveau du paintComponent qui me fait des méchantes erreurs du style :

    at javax.swing.JComponent.paint(JComponent.java:808)

    alors voila mon code de paintComponent() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void paintComponent(Graphics g) {
    		if (numNeurons||numDendrites) this.paint(g);
    		else 
    		g.drawImage(offscreen, 0, 0, this);	
    	}
    numNeurons et numDendrites sont les conditions booléennes pour afficher les modif temporaires faites directement sur this.getGetGraphics.

    Voila voila si vous pouviez m'indiquer comment faire... je pense qu'il faut juste appeler les méthodes par défaut d'un paintComponent lorsque je ne veux pas utiliser le buffer, mais je ne sais pas comment ça se passe à ce moment là.

    Merci beaucoup


    Ps: j'avais demandé sans succès y'a déja pas mal de temps comment recuperer les pixels s'une image, personne m'avais répondu... ms j'ai la solution : utiliser la classe PixelGrabber

  2. #2
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 50
    Points : 58
    Points
    58
    Par défaut
    Salut,

    je ne sais pas si cela peut t'aider mais j'avais cru comprendre que dans la fonction paintComponent, il est préférable d'ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    super.paintComponent(g);
    avant tout autre code ...

    ca aide ?

    Seb

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    En fait j'avais déjà essayé ça, ça m'affiche un truc tout blanc, je sais pas pourquoi, je perds le Graphics..... merci quand même...

  4. #4
    Membre actif
    Avatar de narkotik
    Inscrit en
    Mai 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 117
    Points : 229
    Points
    229
    Par défaut
    a mon avis, le mieux:

    public void update(Graphics g) //methode de rafraichissement
    {
    paint(g); //on redessine tout
    }

    public void paint(Graphics g) //methode de dessin sur le composant
    {
    if (numNeurons||numDendrites)
    repaint(g); //direct on appelle update
    else //sinon
    g.drawImage(offscreen, 0, 0, this); //on se tape le buffer
    }

    a mon avis c'est moyennement mais ca mais bon
    faudrait que tu laches plus de bouts de code sinon...
    (+mitch): nan mais nanar j'préfère mourir contre un platane apres un accident de voiture plutot que d'une rupture d'anévrisme devant mon ecran d'pc

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    aïe ça marche pas non plus... : pas d'erreur mais l'affichage foire complètement dès que l'on passe dans les conditions du if. Ms y'a déja du mieux, merci.
    J'ai pas trop le temps aujourd'hui de mettre encore du code, ms de toute façon le reste a pas beaucoup a voir avec ça. J'esserai demain.

    dans la FAQ j'ai reperé une technique qui pourrait peut-être fonctionner : utiliser un autre buffer BufferedImage : le créer dès qu'on veut faire des modifs temporaires à partir du buffer puis le modifier (car pour une BufferedImage on a la methode très utile createGraphics).
    ensuite l'afficher comme le buffer :
    g.drawImage(offscreen2, 0, 0, this);

    j'esserai ça peut-etre ce soir. dites moi ce que vous en pensez

    aller bye et merci

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    eh bien en fait le coup de la BufferedImage ça fonctionne au poil :

    dans la fonction qui modifie temporairemement je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    numDendrites = true;
    		offscreen2 = new BufferedImage( offscreen.getWidth(null), offscreen.getHeight(null), BufferedImage.TYPE_INT_RGB );
    		Graphics graph = offscreen2.createGraphics();
    		graph.drawImage(offscreen,0,0,null);
    	graph.drawSting("Ca marche",100,100)				
    		graph.dispose();
    et le paintComponent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    super.paintComponent(g);	
    	if (numNeurons || numDendrites)
    	g.drawImage(offscreen2, 0, 0, this);
    	else
    	g.drawImage(offscreen, 0, 0, this);
    voila si ça peut aider quelqu'un...
    et merci à ceux qui m'ont aidé

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

Discussions similaires

  1. [debutant] Forms 10g dans app Swing
    Par jcarre dans le forum Forms
    Réponses: 0
    Dernier message: 02/01/2008, 18h19
  2. [debutant][swing] Tutoriel
    Par Regis.C dans le forum Débuter
    Réponses: 2
    Dernier message: 17/06/2004, 21h30
  3. [Debutant][Swing][Jtable]Peut-on avoir 2 forecolor ?
    Par britou dans le forum Composants
    Réponses: 7
    Dernier message: 14/05/2004, 15h03
  4. [debutant] ajouter ImageIcon dans un Jbutton
    Par agugu dans le forum Composants
    Réponses: 4
    Dernier message: 25/04/2004, 22h40
  5. [DEBUTANT] Une vue dans une procedure stockee ?
    Par Invité dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/02/2004, 11h57

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