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 :

[Graphisme][Débutant(e)] Problème sur repaint()


Sujet :

AWT/Swing Java

  1. #1
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut [Graphisme][Débutant(e)] Problème sur repaint()
    Bonjour,

    j'utilise les fonctions paint() pour mes classes et repaint() dans une fonction run() pour la partie graphique de mon programme.

    Chaque tour, un point bleu se déplace. Mais le point bleu du tour précédent n'est pas effacé... Or j'aimerai ne voir qu'un seul point bleu se déplacant...


    J'espere avoir été clair
    Par avance , je vous remercie de votre aide

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    tu fais bien super.paint(g) dans ta methode paint ?

  3. #3
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Aucune des classes possedant la méthode paint, est dérivé d'une autre classe

    Mon programme (B extend en JFrame et avec JRun d'implémenté) crée un objet A qui est un point bleu, qui se déplace dans la JFrame.


    Mon objet A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void paint(Graphics g) {
    		switch (this.AType)
    		{
    			case 0 : g.setColor(Color.GREEN);g.drawRect(this.myPosition.x,this.myPosition.y,2,2);break;
    			case 1 : g.setColor(Color.BLUE);g.drawRect(this.myPosition.x,this.myPosition.y,2,2);break;
    			case 2 : g.setColor(Color.CYAN);g.drawRect(this.myPosition.x,this.myPosition.y,2,2);break;
    		}
     
    	}
    je modifie dans la fonction run() de mon programme B la position de A et je fais repaint()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	public void paint(Graphics g) {
    		g.setColor(Color.BLACK);
    		g.drawRect(100,100,250,250);
                    mon_objet_A.paint(g);	
    	}

  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
    tout simplement avant d'appliquer un quelconque affichage, tu nettoies tout ce qui est dans ta fenetre comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clearRect( 0, 0, getWidth(), getHeight );
    par exemple dans ton programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void paint(Graphics g) {
          clearRect( 0, 0, getWidth(), getHeight );
          switch (this.AType)
          {
             case 0 : g.setColor(Color.GREEN);g.drawRect(this.myPosition.x,this.myPosition.y,2,2);break;
             case 1 : g.setColor(Color.BLUE);g.drawRect(this.myPosition.x,this.myPosition.y,2,2);break;
             case 2 : g.setColor(Color.CYAN);g.drawRect(this.myPosition.x,this.myPosition.y,2,2);break;
          }
    }

    si t'as d'autres questions, n'hésites pas
    bonne chance pour la suite

  5. #5
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Merci bien, ca s'accade un peu mais je vais me debrouiller

  6. #6
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par narkotik
    tout simplement avant d'appliquer un quelconque affichage, tu nettoies tout ce qui est dans ta fenetre comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clearRect( 0, 0, getWidth(), getHeight );
    c'est pas vraiment standard comme méthode

    essaie de remplacer le clearRect() par un simple super.paint(g); (ça aura le même effet)

  7. #7
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Ouep, c'est plus conventionnel et ca marche sans saccade

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

Discussions similaires

  1. [WD16] débutant windev , problème sur champ vide
    Par T1929D dans le forum WinDev
    Réponses: 12
    Dernier message: 24/07/2013, 04h00
  2. [Débutant] Problème sur JComboBox
    Par bbyoulie dans le forum Débuter
    Réponses: 4
    Dernier message: 30/04/2008, 10h06
  3. [Lisp][Débutant] Problème sur le principe
    Par Treuze dans le forum Lisp
    Réponses: 3
    Dernier message: 20/11/2006, 19h02
  4. [débutant]petit problème sur formulaire avec onglets
    Par Christophe93250 dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2006, 10h46
  5. Débutant SQL, problème sur une jointure censée exclure ??
    Par derfatypik dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/06/2005, 15h55

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