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

Agents de placement/Fenêtres Java Discussion :

pb avec Mouse dragged


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Par défaut pb avec Mouse dragged
    Bonjour,

    Je vas essayer de vous exposer mon pb :

    J'ai une JFrame qui contient un JPanel contenant des JLabel représentant un clavier.
    Le but : on clic sur la première lettre, on reste cliqué en passant sur les autres, et on relâche sur la dernière.

    Pour ça, je voudrais avoir, une fois la souris pressée, la position de la souris par rapport au JLabel sur lequel elle passe (pour savoir si elle passe vers le centre de la lettre ou non).


    Mon premier échec :
    J'ai créer un mouseMotionLstener que j'ai ajouté à chaque JLabel.
    le pb : mouse dragged me donne la position de la souris relativement au premier JLabel (celui qui à "reçu" le clic).

    Du coup j'ai cherché à avoir la position relative à ma Jframe. Ca c'est bon.

    Mon problème était donc de trouver le JLabel correspondant aux coordonnées de mon pointeur relativement à la JFrame.
    Je pensais avoir la solution grâce à ça.

    J'ai donc changé MOUSE_CLICKED par MOUSE_DRAGGED. Et là oh horreur, ça ne marchait pas.
    J'ai donc fais des tests.
    Résultats : ça marche très bien pour CLICKED, PRESSED, RELEASED, ENTERED, EXITED, mais alors pas du tout pour MOVED et DRAGGED.
    Je pense que c'est lié au mouseListener vs mouseMotionListener, mais je trouve pas de solution.

    Si quelqu'un peut m'aider, je l'en remercie.


    Jean

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Tu devrais modifier ton interface et remplacer les JLabel par un seul dessin sur une surface. Tu auras donc un seul listener de souris. Il te suffit de gérer les différents effet toi-même.
    La gestion des listener de souris va être grandement simplifiée.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Par défaut
    J'avais songer à faire quelque chose de cet ordre au début de mon projet.
    Cette technique implique de connaitre les coordonnées de chaque "touche" par rapport au dessin. J'ai trouvé ça fastidieux. Je ne pensais pas que j'aurais mon pb de mouse dragged, du coup j'avais choisis ma technique.

    Si il existe une solution sans repasser par un dessin, ça m'arrangerais. (ça m'évite plus de 30 if pour tester la case et de connaitre les position par rapport à mon dessin).

  4. #4
    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
    Dans le cas présent j'utiliserait le GlassPane combiné à une MouseListener et la méthode getDeepestComponentAt de la classe SwingUtilities

    Celà te récupèrera le composant se trouvant sous la souris.

    A noter que si tu veux que les event parviennent aux composants en eux même, il va falloir les Forwarder via la méthode dispatchEvent.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Par défaut
    Pourrais tu être plus explicite s'il te plait.
    (Forwarder ? glasspane )

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Par défaut
    La nuit porte conseil comme on dit.


    *Danse de la joie*

    Le code que j'avais récupéré marchait, mais pas pour l'événement mouse dragged. J'ai donc déplacé le bout de code intéressant dans le mousemotionlistener de chaque JLabel.

    Ca marche !!!

    Encore merci de votre aide.

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par sticks548 Voir le message
    Si il existe une solution sans repasser par un dessin, ça m'arrangerais. (ça m'évite plus de 30 if pour tester la case et de connaitre les position par rapport à mon dessin).
    Il faut passer par un tableau d'objet. Une simple boucle for avec un seul if à l'intérieur est plus simple
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/07/2010, 07h37
  2. Problème avec du drag'n'drop de JLabel
    Par zzzer dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 22/12/2009, 00h32
  3. [MooTools] Liste sans style avec le drag'n'drop
    Par mac5im dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 13/06/2008, 12h50
  4. Réponses: 1
    Dernier message: 29/04/2006, 17h55
  5. [FLASH MX] Probleme avec le drag d'objet
    Par Toutouffe dans le forum Flash
    Réponses: 3
    Dernier message: 23/01/2005, 23h41

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