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

Langage Java Discussion :

Problème d'utilisation de la classe timer


Sujet :

Langage Java

  1. #1
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut Problème d'utilisation de la classe timer
    Bonjour j'apprend a utiliser la classe timer mais j'ai un problème dans un petit programme tout simple qui a pour but d'afficher un chiffre s'incrementant toutes les secondes jusqu'a 10 :
    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
     
    import java.util.*;
     
    public class Prin {
     
    	public static void main(String[] args) {
     
    		Timer timer;
    		int delai = 1000;
    		int nb = 10,inc = 1;
     
     
    		timer = new Timer(delai,this);
    		while (nb<=10)
    		{
    			timer.start();
    			System.out.println(inc);
    			inc++;
    		}
    	}
     
    }
    Voilà le problème que j'ai :
    Cannot use this in a static context
    The method start() is undefined for the type Timer
    Je ne comprend pas très bien les erreurs que j'ai faites.
    Merci d'avance pour votre aide.
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

  2. #2
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Citation Envoyé par benjiprog
    timer = new Timer(delai,this);
    Ici le terme this est placé dans un contexte statique - la méthode main - et donc il n'y a pas d'instance courante, donc pas de this.

    Je présume que tu as un timer swing ; pour résoudre le problème il faudrait donc que tu mettes en oeuvre l'interface ActionListener sur ta classe Prin, et, au lieu de passer this, de passer une instance de cette classe.

    Avec un peu de chance il y a des explications sur la faq ou les tutoriaux du site.

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Non ce n'est pas un timer swing qu'il utilise ici, mais j'ai m'impression qu'il a un peu mélangé les différents types de timer...

    ça mérite un petiti tour dans la javadoc pour remettre tout ça à plat

    Le Timer de java.util (que le monsieur utilise):
    http://java.sun.com/j2se/1.5.0/docs/...til/Timer.html

    Prend en paramètre un TimerTask (un Runnable en fait) et l'éxécute à tel moment (et le répète si c'est spécificé dans le contructeur)

    Le Timer de javax.swing:
    http://java.sun.com/j2se/1.5.0/docs/...ing/Timer.html

    Prend en paramètre un ActionListener le vas provoque un event tous les delay secondes.
    C'est event déclenchera l'exécution du code contenu dans l'ActionListener

    Bon sinon pour faire plus simple tu peux juste faire un thread avec un boucle dans le run et du Thread.sleep
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  4. #4
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Points : 252
    Points
    252
    Par défaut
    Voilà un pt example avec une java.util.Timer
    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
    import java.util.Timer;
    import java.util.TimerTask;
     
    public class PrintTimer {
        private int count = 0;
        private static int NB = 10;
     
        public static void main(String[] args) {
            final PrintTimer pt = new PrintTimer();
     
            final Timer t = new Timer();
            t.schedule(new TimerTask() {
                public void run() {
                    System.out.println(pt.count++);
                    if (pt.count==PrintTimer.NB) {
                        t.cancel();
                    }
                }
            }, 0, 1000);
        }
    }
    Matthieu
    Quelques tips Java & autres : mon blog

  5. #5
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Ok merci de vos réponse et pour l'exemple qui m'ont beaucoup aider.
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

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

Discussions similaires

  1. [WD17] Problème d'utilisation de la classe c_Excel
    Par Sythris dans le forum WinDev
    Réponses: 8
    Dernier message: 11/09/2012, 09h32
  2. Réponses: 2
    Dernier message: 26/02/2012, 18h11
  3. Problème d'utilisation d'une classe
    Par acidline dans le forum Langage
    Réponses: 5
    Dernier message: 18/07/2008, 18h27
  4. Problème d'utilisation des classes
    Par CyberSlan dans le forum C++
    Réponses: 10
    Dernier message: 16/05/2008, 14h31
  5. Réponses: 4
    Dernier message: 10/04/2007, 16h26

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