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

avec Java Discussion :

Temps de latence Clic


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 7
    Par défaut Temps de latence Clic
    Bonjour à tous,

    J'apprends actuellement le langage Java en école d'ingé .
    Mais je suis face à un petit soucis.
    Pour un exercice , je dois utiliser le clic de souris . Pour cela le prof nous a passé une classe qui permet d'identifier le bouton cliqué et les coordonnées du point cliqué.

    Sauf que mon clic ne marche pas à tous les coups et je n'arrive pas à comprendre pourquoi ..

    Voici mon algo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           Point p = new Point();
            int button = Damier.Plateau.waitClick(p);
            int X = (int)p.getX();
            int Y = (int)p.getY();
    Damier.Plateau est une image

    La méthode waitClick a pour paramètre un objet de type Point et renvoit le bouton cliqué.

    Ce temps de latence pour que le clic marche est du à mon algo ou peut etre que cela vient directement de l'algo waitClick fourni par mon prof ?

  2. #2
    Membre expérimenté
    Profil pro
    Opération
    Inscrit en
    Décembre 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Opération

    Informations forums :
    Inscription : Décembre 2012
    Messages : 91
    Par défaut
    Le code présenté est un peu court pour en comprendre ce problème.
    Une piste du problème peut-être lié au blocage de l'EDT (event dispatch thread). http://docs.oracle.com/javase/tutori.../dispatch.html

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 7
    Par défaut
    Merci pour ta réponse.
    Mais peux tu un peu plus détailler ce qu'est l'EDT ?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Hornetmix Voir le message
    Mais peux tu un peu plus détailler ce qu'est l'EDT ?
    C'est exactement ce que fait le lien qui t'est donné.
    Si tu veux dire, peut-on un peu moins détailler ce qu'est l'EDT, alors ce n'est pas la peine. Comprends juste qu'il y a des règles à respecter et que si on ne les connaît pas, on risque de créer des blocages ou des lags.

    Ce qu'il faut, c'est que tu nous montres plus de code.

    Citation Envoyé par Hornetmix
    Damier.Plateau est une image
    Ça ne nous renseigne pas. Rien qui "est une image" en Java, ne possède de méthode waitClick().

    Il faut qu'on sache comment s'utilisent ces choses, pour savoir en quoi tu t'y prends mal. Ou pour savoir si c'est pas ces choses elles-mêmes, qui ont un bug.

    (Évidemment, vu que tout cela a été inventé par ton prof, les gens les plus à même de t'aider, c'est ceux de ton cours, bien sûr -_-°)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 7
    Par défaut
    Je suis désolé . C’est vrai que ce n'est pas clair du tout ! :/
    J'ai trouvé le problème. C'est que dans le programme de mon prof il y a un "Drag" , dès que je clic et que je bouge la souris c'est cette méthode qui est appelée.
    Mais j'ai un peu du mal à comprendre sa méthode ...

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    private class MouseListener implements MouseListener, MouseMotionListener {
     
           private int x,y;
           private boolean down;
           private volatile int clickX, clickY, clickButton;
           private volatile boolean click;
     
           public final void mousePressed(MouseEvent e) { 
            x=e.getX(); y=e.getY(); down=true;
           }
           public final void mouseReleased(MouseEvent e) {
            x=e.getX(); y=e.getY(); down=false;
           }
           public final void mouseClicked(MouseEvent e) {
            clickX=e.getX(); clickY=e.getY(); click=true;
            switch (e.getModifiers()) {
                case MouseEvent.BUTTON1_MASK: clickButton=1; break;
                case MouseEvent.BUTTON2_MASK: clickButton=2; break;
                case MouseEvent.BUTTON3_MASK: clickButton=3; break;
                default: clickButton=0;
            }
            stopWait();
           }
           public final void mouseEntered(MouseEvent e) { x=e.getX(); y=e.getY(); }
           public final void mouseExited(MouseEvent e) { x=e.getX(); y=e.getY(); down=false; }
     
           public final void mouseDragged(MouseEvent e) { x=e.getX(); y=e.getY(); down=true; }
           public final void mouseMoved(MouseEvent e) { x=e.getX(); y=e.getY(); down=false; }
     
           public final int mouseX() { return x; }
           public final int mouseY() { return y; }
           public final boolean mouseDown() { return down; }
           public final synchronized int waitClick(Point p) {
               try {
                 mouseListener.wait();
               } catch (InterruptedException e) {}
               if (closed) return 0;
               if (p!=null) { p.x=x; p.y=y; }
               return clickButton;
           }
           public final synchronized void stopWait() { mouseListener.notifyAll(); }
      }

  6. #6
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Déjà il y a un petit soucis sur la synchronization utilisé par ton prof à mon sens.

    Il utilise dans un block synchronized sur this (la méthode déclarée synchronized), une variable mouseListener pour faire le wait() dessus.

    Ceci ne sera possible que lorsque this == mouseListener, ce code est très très faible et this.wait() devrait être utilisé en lieu et place, idem dans la méthode stopWait.

    Surtout que mouseListener est une variable déclarée à l'extérieur de la classe elle même.

    Maintenant la méthode waitClick dont la sémantique est loin d'être heureuse encore une fois, on modifie le paramètre Point en retour bof bof, une classe pouvant contenir tous les retours possible de cette méthode serait beaucoup plus claire et sure.

    Donc cette méthode attend que tu click sur la souris, à savoir tu appuies et tu relaches avant de te rendre la main. Elle te retourne le numéro du bouton que tu as cliqué et les coordonnées du click.

    Du moment que tu as clické il n'y a pas de latence, la méthode waitClick retourne immédiatement un résultat.
    Par contre je ne sais pas si tu "drag" un peu la souris si un événement click est généré ou seulement un mouseDrag ..

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

Discussions similaires

  1. Intervalle de temps entre deux clics et date.ToString
    Par calagan99 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 28/05/2007, 09h51
  2. Mesure de temps de latence d'un LCD
    Par Txitxounet dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 08/11/2006, 22h06
  3. Modifier le temps du double clic
    Par ToTo13 dans le forum Langage
    Réponses: 2
    Dernier message: 24/10/2006, 15h28
  4. Problème de temps de latence avec KeyAdapter
    Par marissa_mean dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 08/10/2006, 20h35
  5. [KeyPressed] temps de latence
    Par dieurouille dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 06/06/2006, 21h01

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