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 :

Arrêter un Timer


Sujet :

Interfaces Graphiques en Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Points : 35
    Points
    35
    Par défaut Arrêter un Timer
    Bonjour,

    J'ai crée un timer dans mon appli 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
     
    public void maMethode() {
     
       Timer ti = new Timer(1,new ActionListener() {
     
            public void actionPerformed(ActionEvent e) {
              // opération à chaque lancement du timer
     
           }
     
         });
     
    ti.start;
     
    }
    Le probléme, c'est que je ne sais pas comment arréter mon timer.
    Le "ti.stop()" dans le actionPerformed il n'aime pas. Je ne sais donc pas comment l'arréter :s (il y aura une condition pour son arrêt bien sur)

    Avez vous une idée ?

    merci encore

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Le Timer est la source de l'ActionEvent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Timer timer = (Timer) e.getSource();
    timer.stop();

    Sinon pour pouvoir utiliser une variable dans une classe fille, il faut qu'elle soit déclaré final. Mais dans ce cas cela ne marche pas car la variable ti est initialisé après la création de l'ActionListener...

    a++

  3. #3
    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
    On peut toujours utiliser une array de 1 élément pour contourner le problème des final ) L'array elle-même est final mais pas son contenu.
    Romain Guy
    Android - Mon livre - Mon blog

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Points : 35
    Points
    35
    Par défaut
    Personne n'a eu idée ? :s

  5. #5
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par Rekiem
    Personne n'a eu idée ? :s
    Tu peut faire comme adiGuba le dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void maMethode() {
     
    <div style="margin-left:40px">Timer ti = new Timer(1,new ActionListener() {
     
    <div style="margin-left:40px">public void actionPerformed(ActionEvent e) {
    <div style="margin-left:40px">//Si il faut stopper : 
    Timer timer = (Timer)e.getSource();
    timer.stop();</div>}</div>});
     
    ti.start;</div>}
    Ou sinon comme le dit gfx :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void maMethode() {
     
    <div style="margin-left:40px">final Timer[] ti = new Timer[1];
    ti[0] = new Timer(1,new ActionListener() {
     
    <div style="margin-left:40px">public void actionPerformed(ActionEvent e) {
    <div style="margin-left:40px">//Si il faut stopper : 
    ti[0].stop();</div>}</div>});
     
    ti[0].start;</div>}

  6. #6
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par Gfx
    On peut toujours utiliser une array de 1 élément pour contourner le problème des final ) L'array elle-même est final mais pas son contenu.
    Houlla il faudrait qu'on m'explique...
    En quoi le fait d'instancier un Timer et de le mettre dans un tableau change la propriété de l'objet entré dans le tableau (le Timer) ??
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    l'astuce du final permet de coller la référence en dehors de la pile donc, de ne pas la dépiler en quittant la méthode et ainsi la laisser accessible au thread ou au timer sinon, c'est GC !
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  8. #8
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par Regis.C
    Houlla il faudrait qu'on m'explique...
    En quoi le fait d'instancier un Timer et de le mettre dans un tableau change la propriété de l'objet entré dans le tableau (le Timer) ??
    Ca change que c'est seulement le tableau qu'on ne peut modifier, mais on peut quand même accéder aux objets du tableau dans une autre classe et les modifier

    Ainsi, on a l'avantage du final sur le tableau, c'est à dire pouvoir le passer dans une autre classe.
    Et on pas le désavantage du final, c'est à dire ne pas pouvoir modifier un objet.

  9. #9
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par wichtounet
    Ca change que c'est seulement le tableau qu'on ne peut modifier, mais on peut quand même accéder aux objets du tableau dans une autre classe et les modifier

    Ainsi, on a l'avantage du final sur le tableau, c'est à dire pouvoir le passer dans une autre classe.
    Et on pas le désavantage du final, c'est à dire ne pas pouvoir modifier un objet.
    C'est carrément excellent.
    Je n'avais pas tout saisi sur ce coup...
    Mais on peut très bien acceder à un objet d'une classe en appelant une methode d'une autre classe avec l'objet en paramètre, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Class class1{
     public void methode_Classe1()
    {
     Objet obj1 = new Objet();
     Classe2 c2 = new Classe2();
     c2.methode_Classe2(obj1);
    }
    }
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Pas avec les threads qui sont des composants particulier non gérés par le GC
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  11. #11
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par Alwin
    Pas avec les threads qui sont des composants particulier non gérés par le GC
    Au temps pour moi, j'avais perdu de vue que la classe Timer était étroitement liée aux Threads...
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

Discussions similaires

  1. Comment faire un Timer de fonction PORTABLE ?
    Par dieuP1guin dans le forum C
    Réponses: 3
    Dernier message: 04/07/2003, 10h44
  2. [horloge] conflit caractère / timer
    Par JeanJean dans le forum C
    Réponses: 10
    Dernier message: 09/05/2003, 23h47
  3. [] [Réseau] Anti-timer, anti-idle
    Par clonevince dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 15/01/2003, 22h19
  4. Timer de précision
    Par guigui dans le forum MFC
    Réponses: 1
    Dernier message: 04/12/2002, 15h21
  5. Timer en µsecondes
    Par Dagobert dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 25/11/2002, 00h59

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