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

Interfaces Graphiques en Java Discussion :

Timer ne marche pas


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 204
    Points : 123
    Points
    123
    Par défaut Timer ne marche pas
    Bonjour à tous et à toutes,

    j'essaye d'utiliser Timer() pour pouvoir afficher un Hello World toutes les 1 seconde.
    Mais mon code basique ne marche pas.

    Voici le code qui est constitué de 2 fichiers :

    - Fichier Main.java :
    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
     
     
    /*Import :*/
    import java.awt.event.ActionListener;
    import javax.swing.Timer;
     
    public class Main {
     
        public static void main(String[] args) {
            // TODO code application logic here
     
           ActionListener ActionListener_1 = new Traitement();        
     
           Timer Timer_1 = new Timer(1000, ActionListener_1);  
           Timer_1.start();
     
        }   
    }

    - Fichier Traitement.java :
    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
     
     
    /*Import :*/
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    public class Traitement implements ActionListener {
     
        @Override
        public void actionPerformed(ActionEvent ActionEvent_1) 
        {        
            System.out.println("Hello World");
        }
     
    }

    En exécutant le code, il n'y a rien qui se passe, càd pas d'affichage de Hello World toutes les 1 seconde.

    Avez-vous une idée ?

    Merci d'avance pour vos réponses, cordialement.

  2. #2
    Membre éclairé
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 471
    Points : 831
    Points
    831
    Par défaut
    Bonjour totoAussi

    en fait, ton appli se termine avant qu'elle ai le temps d'afficher quqoi que ce soit

    j'ai modifié ton code comme ceci, et cela fonctionne (zone en gras)

    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
    import java.awt.event.ActionListener;
    import javax.swing.Timer;
     
    public class Main {
     
        public static void main(String[] args) throws InterruptedException {
            // TODO code application logic here
     
           ActionListener ActionListener_1 = new Traitement();        
     
           Timer Timer_1 = new Timer(1000, ActionListener_1);  
           Timer_1.start();
           Thread.sleep(10000);
     
        }
    }
    Page sur Developpez : http://pbriand.developpez.com

  3. #3
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 204
    Points : 123
    Points
    123
    Par défaut
    Merci beacoup pour ta réponse, ça marche.

    Mais pourquoi mon appli se termine avant qu'elle ai le temps d'afficher quqoi que ce soit ?,
    et pourquoi faut-il mettre un sleep ?

    A+

  4. #4
    Membre éclairé
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 471
    Points : 831
    Points
    831
    Par défaut
    Ton programme principal (le main qui est le père) va créer un timer (thread qui sera le fils du main) mais "Le fils" ne peux vivre que si son père est vivant.

    Comme ton main se termine juste après l'initialisation du timer, donc bien avant la seconde fatidique, ton timer est tué avant qu'il est eu le temps d'arriver à échéance, d'ou pas d'affichage

    Avec le sleep, le père reste vivant, donc le timer peut toutes les secondes, envoyer ton message.

    j'espère que tu as peu comprendre mes explications un peu fumeuse.
    Page sur Developpez : http://pbriand.developpez.com

  5. #5
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 204
    Points : 123
    Points
    123
    Par défaut
    Ah merci pour cette explication.

    J'a tout compris. Le sleep permet de maintenir en vie le thread main pour que le thread fils (le timer) ai le temps de s'exécuter.

    Merci encore, résolu.

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

Discussions similaires

  1. Timer.start ne marche pas
    Par ToutDroit dans le forum EDT/SwingWorker
    Réponses: 5
    Dernier message: 28/07/2011, 01h13
  2. [C#][2.0] WinService & Timer : Marche pas !!
    Par NeoMan dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/05/2006, 12h07
  3. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  4. Réponses: 9
    Dernier message: 07/05/2003, 12h57
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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