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 :

[javax.swing.Timer] Arrêter mon Timer


Sujet :

AWT/Swing Java

  1. #1
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut [javax.swing.Timer] Arrêter mon Timer
    Bonjour

    Pour mon application, j'utilise un Timer pour effectuer un "recentrage" de mon graphique visualisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int delay = 2000;
     
    		java.awt.event.ActionListener taskPerformer = new java.awt.event.ActionListener() {
     
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
     
    				pcam.animateViewToCenterBounds(layer.getGlobalFullBounds(), true, 1000L);
     
    			}};
     
    			javax.swing.Timer timer = new javax.swing.Timer(delay, taskPerformer);
     
    			timer.start();
    Mon problème, c'est d'arrêter mon Timer une fois que le recentrage est achevé. Or, je ne vois pas comment je pourrais implémenter la méthode stop() de mon Timer.
    Sinon, si je zoome sur mon graphique, il revient à la position initiale à chaque tour, pas cool !

    Merci d'avance de vos réponses.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  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,


    Heu... Tu as une méthode stop() dans la classe Timer...

    a++

  3. #3
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Hello

    Je suis bien d'accord avec toi adiGuba. L'ennui c'est que je ne laisse pas mon Timer suffisament de temps pour opérer :
    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
     
    int delay = 2000;
     
    		java.awt.event.ActionListener taskPerformer = new java.awt.event.ActionListener() {
     
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
     
    				pcam.animateViewToCenterBounds(layer.getGlobalFullBounds(), true, 1000L);
     
    			}
     
    		};
     
    		javax.swing.Timer timer = new javax.swing.Timer(delay, taskPerformer);
     
    		timer.start();
     
    		timer.stop();
    C'est idiot, aussitôt je lance mon Timer, aussitôt je l'arrête ! Et comme je l'ai dit plus haut, mon problème vient de: où je met ma méthode stop pour arrêter mon Timer.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  4. #4
    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
    Citation Envoyé par GLDavid
    C'est idiot, aussitôt je lance mon Timer, aussitôt je l'arrête ! Et comme je l'ai dit plus haut, mon problème vient de: où je met ma méthode stop pour arrêter mon Timer.
    Le recentrace ? C'est ton timer qui le fait ou c'est un autre thread ?

    Il te suffit juste de déplacer ce stop() à la fin du recentrage en passant la référence de ton timer...

    a++

  5. #5
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Mon recentrage est fait par mon Timer. Bon, reste plus qu'à tenter de passer la référence (gaspppp !!!! Comment fait-on ?)

    @++

    GLDavid, qui n'a plus fait de Perl depuis longtemps.
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  6. #6
    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
    Citation Envoyé par GLDavid
    Mon recentrage est fait par mon Timer. Bon, reste plus qu'à tenter de passer la référence (gaspppp !!!! Comment fait-on ?)
    Tu peux mettre la référence de ton Timer en final afin qu'elle soit accessible dans ta classe anonyme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    final javax.swing.Timer timer = new javax.swing.Timer(delay, new java.awt.event.ActionListener() {
     
    	public void actionPerformed(java.awt.event.ActionEvent evt) {
     
    		pcam.animateViewToCenterBounds(layer.getGlobalFullBounds(), true, 1000L);
     
    		if (/* condition pour savoir si c'est fini */) {
    			timer.stop();
    		}
    	}
    });
     
     
    timer.start();

    Sinon il y a de forte change que l'objet ActionEvent contiennent une référence au Timer avec getSource()...

    a++

    Citation Envoyé par GLDavid
    GLDavid, qui n'a plus fait de Perl depuis longtemps.

  7. #7
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    adiGuba, merci à toi
    C'est impeccable ça marche super bien !
    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
     
    int delay = 2000;
     
    		java.awt.event.ActionListener taskPerformer = new java.awt.event.ActionListener() {
     
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
     
    				pcam.animateViewToCenterBounds(layer.getGlobalFullBounds(), true, 1000L);
     
    				javax.swing.Timer timer = (javax.swing.Timer)evt.getSource();
     
    				timer.stop();
     
    			}};
     
    			javax.swing.Timer timer = new javax.swing.Timer(delay, taskPerformer);
     
    			timer.start();
    Un gros bisou ?????

    @++

    GLDavid qui taquine adiGuba
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

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

Discussions similaires

  1. Délai du premier event : javax.swing.Timer
    Par Birmania dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 28/06/2012, 22h06
  2. Utilisation de "javax.swing.Timer"
    Par Alba.1337 dans le forum Langage
    Réponses: 10
    Dernier message: 04/12/2011, 17h39
  3. Chronomètre simple utilisant un javax.swing.Timer
    Par Johann.Heymes dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 08/03/2011, 19h09
  4. [Thread] Probleme avec mon Timer
    Par Nico66 dans le forum EDT/SwingWorker
    Réponses: 10
    Dernier message: 02/06/2005, 17h10
  5. Mon timer n'est pas prioritaire !!
    Par Hectorz dans le forum MFC
    Réponses: 9
    Dernier message: 09/02/2005, 12h57

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