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 :

Attendre un évènement


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut Attendre un évènement
    Bonjour,

    je réalise une interface de classification d'éléments.
    Pour cela je dois faire afficher un par un tous les éléments et attendre que l'utilisateur clique sur un bouton.
    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
    23
    24
    25
    26
    27
     
    classe maclasse {
    ...
    for (i=0 ; i < fichiers.length ; i++)
    	{
    	...
    	while ( !Continuer ) ;  // je bloque en attendant la réponse
    	}
    ...
     
     
    private void CreerIHM()
    {
    ...
    BoutonValider = new JButton("Valider") ;
    BoutonValider.setEnabled(false) ;
    BoutonValider.addActionListener( new ActionListener()
    	{
    	public void actionPerformed(ActionEvent e)
    		{
    		...
    		Continuer = true ;
    		...
    		}
    	}) ;
    ...
    }

    Est ce que quelqu'un pourrait me conseiller une meilleur solution ? Une solution qui ne me consomme pas 100% de mon CPU.

    Merci par avance...
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  2. #2
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Salut,

    Pourquoi ne pas mettre le code qui vient après
    dans la méthode ActionPerdormed et si c'est du calcul ou une operation qui prend du temps ,tu peux créer un Thread.

    @+


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    mmm, j'ai peur de ne pas bien saisir...
    Mon code est déjà dans le AtionPerformed.
    Le while (!Continuer) sert à bloquer les instruction jusqu'à ce que l'on clique sur le bouton.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  4. #4
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Ca m'étonnerait que ça marche, si ton while(!Continuer) n'est pas dans un Thread. Il est normal que ça consomme 100% de ton CPU, parce que ta boucle bloque tout, même ton interface.

  5. #5
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Une question, tu fais ca dans une fenetre en utilisant awt ou swing non ?

    Si c'est le cas, tu na pas besoin de faire ce while(!continuer)
    Simplement ton bouton avec son ActionListener attendra l'evenement.

    je ne vois pas vraiment ou est le probleme.

  6. #6
    Membre expérimenté Avatar de hydraland
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Par défaut
    Salut,

    Pour un blocage sans consommer du CPU tu peux faire :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    lasse maclasse {
    Object obj;
    ...
    for (i=0 ; i < fichiers.length ; i++)
    	{
    	...
    	synchronized(obj)
           {
              obj.wait();// je bloque en attendant la réponse
           }  
    }
    ...
     
     
    private void CreerIHM()
    {
    ...
    BoutonValider.addActionListener( new ActionListener()
    	{
    	public void actionPerformed(ActionEvent e)
    		{
    		...
    		synchronized(obj)
                    {
                       obj.notify();// je débloque
                    }  
    		...
    		}
    	}) ;
    ...
    }
    Par contre je ne suis pas sur que c'est la meilleure solution à employer dans ton cas. Le code qui contient est t'il exécuté dans l'EDT ou pas ? Car si c'est oui le code que je t'ai donné ne marchera pas.

    A+
    Hydraland

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

Discussions similaires

  1. Attendre un évènement
    Par bert_ dans le forum Langage
    Réponses: 10
    Dernier message: 06/05/2009, 11h03
  2. blocage d'une fonction en cours pour attendre un évènement
    Par lucyz dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 20/01/2009, 12h37
  3. Réponses: 3
    Dernier message: 12/07/2007, 02h40
  4. Réponses: 3
    Dernier message: 13/06/2007, 16h47
  5. Attendre un évènement pour continuer l'exécution
    Par vinzzzz dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 22/11/2006, 21h42

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