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 :

probleme pour dessiner


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Par défaut probleme pour dessiner
    hello,

    voila, j'ai fait une applet. j'ai egalement fait une JPanel et dans cette JPanel je dessine un truc tout bete...

    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
    ublic class Simulation extends JPanel{
     int i=0;
    	public Simulation(){
     
    	}
    	public void init(){
    		setSize(50,50);
    		setBackground(Color.blue);
    		repaint();
    		validate();
    	}
     
    	public void paint(Graphics g){
    		super.paint(g);
    		g.setColor(Color.black);
    		g.drawRect(0,0, 20+i, 20+i);
     
    	}
    }
    ensuite j'aimerais que dans mon applet, lorsque j'appuie sur un bouton (ou autre, une action quoi), je change la valeu de i et j'aimerais que mon dessin s'update..
    voila le code dans mon applet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    sim=new Simulation();
    ...
    for(int k=0;k<=20;k++){
    				pause(20);
    				sim.i=k;
     
    			}
    merci pour vos tuyaux

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut
    essaye ça :
    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
    public class Simulation extends JPanel{
     int i=0;
    	public Simulation(){
     
    	}
    	public void init(){
    		setSize(50,50);
    		setBackground(Color.blue);
    		repaint();
    		validate();
    	}
     
    	public void paint(Graphics g){
    		super.paint(g);
    		g.setColor(Color.black);
    		g.drawRect(0,0, i, i);
     
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    sim=new Simulation();
    ...
    for(int k=0;k<=20;k++){
    	pause(20);
    	sim.i=k;
    	sim.refresh();		
    }

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Par défaut
    hummm

    moi il n'accepte pas mon refresh... il me dit que la fonction refresh n'existe pas...

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut
    Citation Envoyé par jayjay.f
    hummm

    moi il n'accepte pas mon refresh... il me dit que la fonction refresh n'existe pas...
    oups pas fait attention au fait que ça étendait un JPanel.
    essaye repaint().

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Par défaut
    cela ne fait rien...

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut
    tu peux essayer de faire un refresh sur la frame ou le composant qui contient le panel si il y a en a un.

    sinon sur les JPanel il y a une méthode getGraphics() et la tu peux redessiner directement à chaque fois ce qui est plus propre.
    par exemple

    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
    class Simulation extends JPanel {
    	int i = 0;
     
    	public Simulation() {
     
    	}
     
    	public void init() {
    		setSize(50, 50);
    		setBackground(Color.blue);
    		repaint();
    		validate();
    	}
     
    	public void paint(Graphics g) {
    		super.paint(g);
    		g.setColor(Color.black);
    		g.drawRect(0, 0, 20 + i, 20 + i);
    		repaint();
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sim=new Simulation();
    ...
    for(int k=0;k<=20;k++){
    	pause(20);
    	sim.i=k;
    	sim.repaint();		
    }
    edit : la ça devrait marcher il faut rajouter un repaint() dans ta méthode paint

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Par défaut
    euhhh

    ta rien changer au code...

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut
    si un repaint() dans la méthode
    public void paint(Graphics g)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void paint(Graphics g) {
    	super.paint(g);
    	g.setColor(Color.black);
    	g.drawRect(0, 0, 20 + i, 20 + i);
    	repaint();
    }

  9. #9
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    En version plus propre respectant l'encapsulation (on fait de l'orienté objet ou bien?)

    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
    
    class Simulation extends JPanel {
        private int margin = 0;
     
        public Simulation() {
     
        }
            
            public void setMargin(int margin) {
               this.margin = margin;
               repaint();
            }
     
        public void init() {
            setSize(50, 50);
            setBackground(Color.blue);
            repaint();
            validate();
        }
     
            //pour faire du dessin mieux vaut redéfinir paintComponent que paint
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.black);
            g.drawRect(0, 0, 20 + margin, 20 + margin);
            //repaint(); A banir car dangereux, peut amener à des boucles infinies, 
                    //le painComponent pouvant être appelé lors d'un repaint
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    
    sim=new Simulation();
    ...
    for(int i=0;i<=20;i++){
        pause(20);
        sim.setMargin(i);    
    }

  10. #10
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Par défaut
    change rien du tout...

    arghhhhh

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut
    je n'arrivais plu à trouver le paintComponent et effectivement c'est mieux comme l'écrit sinok (je faisais juste ça de tête pour dépanner).

    mais si ça ne marche toujours pas es-tu certain ce n'est pas la méthode pause() qui ne marche pas?

  12. #12
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Par défaut
    sur elle marche bien,

    mais tout cela ne marche toujours pas.

    Je reprecise que je veut voir mon rectangle changer de longeur.

    merci

  13. #13
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Par défaut
    bon, j'ai enfin trouve la solution, et merci pour toutes vos reponses.


    la solution est dans mon applet, dans la boucle for de mettre un petit...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sim.paint(sim.getGraphics());

    merci beaucoup les gars (et peut etre fille)

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

Discussions similaires

  1. petit probleme pour dessiner un tableau
    Par fleurrouge dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/12/2012, 12h22
  2. [débutant]probleme pour dessiner des shapes
    Par pingoui dans le forum 2D
    Réponses: 8
    Dernier message: 27/08/2007, 21h44
  3. Probleme pour dessiner
    Par DrTank dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 19/05/2007, 13h53
  4. probleme pour dessiner dans un JPanel
    Par L4BiN dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 02/08/2006, 16h01
  5. [debutant] Probleme pour dessiner un simple cube
    Par scorpiwolf dans le forum DirectX
    Réponses: 6
    Dernier message: 02/07/2003, 21h29

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