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 :

Attente d'un evement souris


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juin 2006
    Messages : 169
    Par défaut Attente d'un evement souris
    bonjour a tous,

    voila j'ai une classe principale qui doit attendre un événement souris dans une classe héritant d'un JPanel. Pour cela j'ai utiliser un wait et un notify. Mais je pense que mon notify ne marche pas. Je reste dans le wait

    Voila le code pour le wait dans ma classe principale:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    this.continu = true;
            synchronized (this) {
                while (continu) {
                    try {
                        this.wait();
                    } catch (InterruptedException ie) {
                    }
                }
            }
    Et voici le code pour le notify dans la classe héritant de mon JPanel. Le code est mis dans l'événement souris...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void mouseClicked(MouseEvent e) {
            /*Quand on clique sur la carte on commence un tour ou une action*/
            this.parent.setContinu(false);
            synchronized (this.parent) {
                notify();
            }
     
        }
    Si quelqu'un peut m'aider merci

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    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 483
    Par défaut
    comment tu arrive dans le bloc avec le wait?

  3. #3
    Membre confirmé
    Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juin 2006
    Messages : 169
    Par défaut
    Je suis dans un méthode que j'ai appelé jeu().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void jeu() {
          ...
            this.continu = true;
            synchronized (this) {
                while (continu) {
                    try {
                        this.wait();
                    } catch (InterruptedException ie) {
                    }
                }
            }
        }

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    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 483
    Par défaut
    quel thread appelle cette méthode? Quelle est la chaine d'appel? La méthode jeu ne s'est pas appelée toute seule. Si tu appel jeu dans une action listener ou autre, c'est normal que ca givre, tu bloque le thread qui gère tous les évènement de l'UI (l'EDT)

  5. #5
    Membre confirmé
    Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juin 2006
    Messages : 169
    Par défaut
    ouais c'est dans un evenement. Je dois faire comment alors?

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    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 483
    Par défaut
    ne pas mettre en pause le thread de l'EDT, jamais. Voir les FAQs javagui sur comment effectuer des traitements longs en dehors de l'EDT.

  7. #7
    Membre confirmé
    Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juin 2006
    Messages : 169
    Par défaut
    j'ai vu mais alors la j'ai absolument rien compris.

    Enfin je suis un peu perdu va-t-on dire

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    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 483
    Par défaut
    qu'est-ce que tu ne comprend pas? Le Thread de l'EDT et utilisé par toute ton applciation pour gérer les évènement associés à l'interface graphique. A ce titre, il ne peut faire que des opérations rapide, sinon tu gèle tout le reste de l'interface pendant que tu fait ton traitement, ce qui n'est vraiment pas recommandé.

    Pour 'mettre en pause' ton jeu, si tu veux qu'on te dise comment faire, il faudrait déjà savoir comme tu gère ton jeu....

  9. #9
    Membre confirmé
    Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juin 2006
    Messages : 169
    Par défaut
    alors je t'explique:

    Mon application lance la méthode jeu qui créé mes îles, les pions de mes joueurs. J'ai la classe principale qui est un JFrame et qui possède un JPanel qui lui permet de m'afficher la carte et tous les événements qui sont approprié à cette carte.

    J'ai donc ma classe principale avec ma méthode jeu et une autre classe InterfaceCarte qui à les evenements de la carte. Dans ma méthode jeu, entre deux méthode, je voudrais mettre une attente sur l'evenement clique souris.

    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
     
    ic.creerPion();
    ic.creerIle();
    switch (this.partie_in_tours) {
                case 0:
                    lancerAmelioration();
                    this.partie_in_tours++;
                    break;
                case 1:
                    lancerRoue();
                    this.partie_in_tours++;
                    break;
                case 3:
                    this.partie_in_tours = 0;
                    break;
            }
    j'ajoute ma InterfaceCarte dans un JPanel de ma classe principale

Discussions similaires

  1. Attente d'un message (clic de la souris)
    Par BNS dans le forum MFC
    Réponses: 9
    Dernier message: 04/04/2006, 13h10
  2. Trouver le composant sous la souris...
    Par BestofMac dans le forum Composants VCL
    Réponses: 2
    Dernier message: 17/07/2002, 03h46
  3. [Choix] Quelles attentes par rapport aux SGBD ?
    Par thierry34 dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 13/07/2002, 21h08
  4. Comment masquer le curseur de la souris ?
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/06/2002, 19h54
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 21h07

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