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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    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 éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 500
    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();

  3. #3
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    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 414
    Par défaut
    +1 pour Satch

    Ton code est-il compilable?

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

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    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 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
    Oui, comme je viens de le dire il faut appeler repaint().

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