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 :

Souci entre mousePressed & mouseDragged


Sujet :

AWT/Swing 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 Souci entre mousePressed & mouseDragged
    Bonjour,

    je souhaite utiliser la souris pour gérer les rotations d'un objet dans mon application 3D. Pour cela, j'ai besoin des coordonnées du clic au moment où l'on presse le bouton puis des coordonnés du pointeur quand le bouton est enfoncé.
    Mais il y a un souci, voilà l'exemple :
    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
     
    public class Souris3D implements MouseListener, MouseMotionListener, MouseWheelListener
    {
    private int OldX, OldY ;
    ...
    public void mousePressed(MouseEvent me) // Quand on presse sur le bouton
    	{
    	OldX = me.getX() ;
    	OldY = me.getY() ;
    	System.out.println("mousePressed Old = " + OldX + " " + OldY + "-------------------------->>>>>>>>>>>>>>>>>>") ;
    	}
    ...
    public void mouseDragged(MouseEvent me) // Mouvement de la souris bouton enfoncé.
    	{
    	System.out.println("mouseDragged : " + me.getX() + " " + me.getY() + " Old = " + OldX + " " + OldY) ;
    	OldX = me.getX() ;
    	OldY = me.getY() ;
    	}
    ...
    }
    Mais entre les deux fonctions, les valeurs de OldX et OldY sont perdues, voilà l'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mousePressed Old = 558 439-------------------------->>>>>>>>>>>>>>>>>>
    mouseDragged : 558 431 Old = 345 324
    mouseDragged : 558 424 Old = 558 431
    mouseDragged : 557 422 Old = 558 424
    On voit que dans le méthode moussePress les valeurs sont changées, mais dans la méthode mousseDragged elles sont différentes.

    Est ce que quelqu'un sait pourquoi ?
    Si oui, comment contourner le souci ?

    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
    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
    Personne ne se sert de la souris ...
    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.

  3. #3
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    c'est vrai que c'est bizarre.

    Je ne sais pas si c'est la bonne explication, c'est une supposition.
    Le mouseDragged s'execute au meme moment que le mousepressed,
    et les coordonnées (345 324) correspondent a un click anterieur.



    Tu peux essayer de souvegarder les valeurs dans d'autre variables.

    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
     
     
    public class Souris3D implements MouseListener, MouseMotionListener, MouseWheelListener
    {
    private int OldX, OldY ;
    private int NewX, NewY ;
    ...
    public void mousePressed(MouseEvent me) // Quand on presse sur le bouton
    	{
    	OldX = me.getX() ;
    	OldY = me.getY() ;
    	System.out.println("mousePressed Old = " + OldX + " " + OldY + "-------------------------->>>>>>>>>>>>>>>>>>") ;
    	}
    ...
    public void mouseDragged(MouseEvent me) // Mouvement de la souris bouton enfoncé.
    	{
            NewX = me.getX() ;
    	NewY = me.getY() ;
    	System.out.println("mouseDragged : " + NewX + " " + NewY + " Old = " + OldX + " " + OldY) ;
     
    	}
    ...
    }

    Tu fais ensuite la difference des deux pour savoir de combien tu dois tourner ton objet3D.

    Attention : Si tu procede de cette maniere tu dois toujours appliquer la rotation par rapport a la position d'origine, PAS ajouter la valeur a chaque evenement mouseDragged.

  4. #4
    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
    merci,

    c'est pour cela que je garde une valeur en memoire. En faisant l'écart entre le Old et New, je peux ainsi additionner mon écart et ainsi savoir de combien je dois tourner mon objet.

    Mais le souci, c'est de savoir ce que je viens de montrer : les écarts incohérents du old
    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.

  5. #5
    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
    Bonjour,

    si on regarde l'ordre d'affichage, on s'apperçoit que moussePressed est appellé avant mousseDragged.
    Donc pourquoi ai-je cet écart ??? C'est bizarre ou il y a quelques chose qui m'échappe ...
    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.

  6. #6
    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
    Bonjour,

    alors je viens de trouver...
    Il faut déclarer le variables OldX et OldY en STATIC et ca marche parfaitement.

    Mais je ne sais pas pourquoi....
    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.

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    bah si c'est normal, il faut bien appuyer sur la souris avant de pouvoir la dragger, le drag correspondant à l'action souris pressée + déplacement, il faut bien presser le bouton avant de pouvoir le faire

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

Discussions similaires

  1. Gros soucis entre Talend et ma base oracle SQL Developper
    Par NFHnv dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 14/12/2012, 09h00
  2. Souci entre pipe et exec
    Par fredonouille dans le forum Linux
    Réponses: 3
    Dernier message: 22/12/2007, 11h48
  3. Soucis entre 2 tables
    Par nico341 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/11/2007, 19h54
  4. Souci entre hash et array
    Par Biiru dans le forum Langage
    Réponses: 1
    Dernier message: 01/05/2007, 18h27

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