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

Java Discussion :

Problème timer méthode wait


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 140
    Par défaut Problème timer méthode wait
    Salut à tous,

    je suis en train de concevoir une application et j'ai un petit problème. Je possède un bouton sur mon interface graphique pour pouvoir interrompre le jeu. Quand je clique dessus, il atterit dans la méthode suivante pour mettre en pause mon Timer(de la classe swing.Timer). Je remarque que mon programme reste dans l'exécution de timer.wait() et n'exécute jamais stopwatch.stop()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public void pauseGame() {
     
    		if (!avatarToPlay.isAI()) {
    			interrupted = true;
     
    			synchronized (timer) {
    				try {
    					timer.wait();
    					stopWatch.stop();
    				} catch (InterruptedException e) {
    				}
    			}
    		}
    	}
    merci

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Par défaut
    Salut

    le code que tu donnes n'est pas suffisant, c'est dur de deviner de quels types sont tes objets pas vrai?

    Moi je n'ai pas l'habitude des timers. Cependant, si la méthode wait que tu utilises est celle de la classe Object, la javadoc est très claire:

    Après l'appel de la méthode wait, l'objet va dormir jusqu'à ce que la méthode notify ou notifyall soit appelée. Si tu ne l'appelles pas, l'objet dormira indéfinimént
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 140
    Par défaut
    timer est en fait une instance de la classe Timer du package de swing.
    Quand je fais appel à la méthode ci-dessous, il affiche bien 'avant appel' mais pas 'apres appel'. Pourtant, pas d'erreurs apparait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void pauseGame() {
     
           synchronized (timer) {
    		try {
                            System.out.println("avant appel");
    			timer.wait();
    			System.out.println("apres appel');
    		} catch (InterruptedException e) {
    		}
    	}
    }

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    on peux voir le code qui fait timer.notify() ?

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 140
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void resumeGame() {
    	interrupted = false;
     
    	synchronized (timer) {
    		timer.notify();
    		stopWatch.start();
    	}
    }

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ces méthodes sont appelées comment? Dans quels threads? Pourquoi voulez vous arrêter le thread courant (appel wait()) plutot que de juste arrêter le timer ( stop )?

Discussions similaires

  1. Problème avec méthode "cloneNode()"
    Par kingmandrax dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 31/10/2006, 14h14
  2. Problème de méthode
    Par Thibaut_Dupont dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 10/07/2006, 14h16
  3. problème de méthode paint()
    Par guillaumeM63 dans le forum 2D
    Réponses: 2
    Dernier message: 16/05/2006, 23h50
  4. problème bizarre, méthode recurssive
    Par akrobat dans le forum C++
    Réponses: 19
    Dernier message: 05/05/2006, 14h22
  5. Problème de méthode
    Par Clad3 dans le forum C++
    Réponses: 2
    Dernier message: 10/09/2005, 11h08

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