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] taches avec implements runnable


Sujet :

AWT/Swing Java

  1. #1
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut [debutant] taches avec implements runnable
    Bonjour,
    Je cherche à faire fonctionner une classe avec Runnable
    mais je n'arrive pas à compiler en utilisant la méthode start()
    qui devrait appartenir à la classe TestGraphic. Il y a quelque chose
    qui m'échappe. En fait je cherche à lancer un affichage draw en utilisant
    la boucle que je mets dans la méthode run.
    D'avance merci de votre aide.

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    public class TestGraphic extends JFrame implements Runnable
    {
    	static int i;
    	public JPanel test2; 
    	Graphics lecontexteGr;
    	public static void main (String[] args)
    	{
     
    	TestGraphic TG; 
    	TG = new TestGraphic(); 
    	TG.show();
    	TG.start();
    }
     
     
    public TestGraphic ()
    	{
     
    	setSize (300,200);
    	addWindowListener (new WindowAdapter() {
    	public void windowClosing (WindowEvent événement)
    		{ 
    		System.exit(0);
    		}
    	});
     
    	test2 = new lePanneau();
    	getContentPane().add(test2);
     
    	}
     
    	public void run()
    	{
    	i=0;	
    	while (i<100)
    		{
    		i++;
    		update();
    		}
    	}
    }
     
    class lePanneau extends JPanel {
    public void paintComponent (Graphics surface)
    {
    super.paintComponent(surface);
    surface.drawRect(5, 5, 10, 10);
    surface.drawArc(20, 20,200, 200, 10, 30);
    }
     
    }

  2. #2
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    Pour faire un thread, tu as 2 solution :

    - ta classe peut étendre Thread, auquel cas un start() suffit.

    - ta classe peut implémenter runnable, auquel cas tu lances le thread en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Thread(tonObjetRunnable).start();
    Je sais que désormais vivre est un calembour,
    La mort est devenue un état permanent,
    Le monde est aux fantômes, aux hyènes et aux vautours.
    Moi je vous dis bravo et vive la mort.

  3. #3
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    +1 pour Satch

    Ton code est-il compilable?
    Bien le bonjour chez vous
    Jowo

  4. #4
    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
    Et toutes les operations de dessin doivent avoir lieu dans l'EDT (Event Dispatch Thread). Il faut donc appeler repaint() et pas update().
    Romain Guy
    Android - Mon livre - Mon blog

  5. #5
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut
    Merci pour le renseignement.
    Il me reste à completer la méthode run convenablement
    et j ai aussi un peu de mal.
    Cette methode run() appartient à ma classe dérivée de JFrame
    qui implemente runnable.
    Mais je voudrais faire une boucle d'affichage à l'intérireur, et pour
    cela je souhaite recupérer le contexte graphique dans le run.
    Je ne sais pas comment faire et est ce la bonne méthode que
    de recuperer le contexte graphique ?

    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 void run() 
       { 
       i=0;    
       while (i<100) 
          { 
          i++; 
          update(); 
          } 
       } 
    } 
     
    class lePanneau extends JPanel { 
    public void paintComponent (Graphics surface) 
    { 
    super.paintComponent(surface); 
    surface.drawRect(5, 5, 10, 10); 
    surface.drawArc(20, 20,200, 200, 10, 30); 
    }
    Je pensais appeler paintComponent depuis le run, dois je faire autrement ?

  6. #6
    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
    Oui, comme je viens de le dire il faut appeler repaint().
    Romain Guy
    Android - Mon livre - Mon blog

Discussions similaires

  1. thread avec extends Thread ou implements Runnable, la difference ?
    Par italiasky dans le forum Général Java
    Réponses: 3
    Dernier message: 24/01/2008, 20h38
  2. Thread avec Implements Runnable
    Par pier* dans le forum Java ME
    Réponses: 1
    Dernier message: 26/02/2006, 22h46
  3. [DEBUTANT] probleme avec split ?
    Par matN59 dans le forum ASP
    Réponses: 6
    Dernier message: 23/10/2004, 15h47
  4. Réponses: 2
    Dernier message: 31/08/2004, 11h45
  5. [Debutant] Executable avec Jbuilder
    Par Stef784ever dans le forum JBuilder
    Réponses: 3
    Dernier message: 16/05/2003, 14h40

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