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 :

Récupérer un MouseEvent dans un autre système de coordonnée


Sujet :

AWT/Swing Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut Récupérer un MouseEvent dans un autre système de coordonnée
    Bonjour,

    Dans une application SWING j'ai une JFrame qui contient (cf. image en PJ pour mieux comprendre) :
    • Un JScrollPane à gauche, celui-ci contient des Miniature
    • Un Drawer à droite


    Les Miniature sont des JLabel représentant des images.
    Le Drawer est un dérivé de JPanel dont la méthode paintComponent à été surchargé pour dessiner plusieurs zones à l'intérieur du panel.

    Ce que je cherche à faire : je veux que l'utilisateur fasse un glissé/déposé depuis les Miniature vers le Drawer. Pendant le glissé-déposé, je veux juste que le curseur change d'apparence (le problème n'est pas là).

    La solution que j'ai pris jusque là : le Drawer écoute chaque Miniature. Ainsi je peux gérer le glisser déposer.
    Le problème : lorsque l'utilisateur lache le clic, il me faut les coordonnées du point de dépôt dans le repère du Drawer (pour savoir dans quelle zone j'ai posé) or en procédant ainsi un event.getPoint() me retourne les coordonnées par rapport à la Miniature.

    Merci de m'aider à résoudre ce problème, je bloque vraiment depuis un moment.
    Images attachées Images attachées  

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Ça faisait des heures que je cherche et je trouve la solution tout juste après avoir posté, en "dernier recours"...!

    En fait je peux passer dans le bon système de coordonnée avec une différence des méthodes qui retournent la position relatives à l'écran :

    Drawer.java
    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
        public void mouseReleased(MouseEvent e) {
     
            // Position relative à l'écran du laché de la sourie
            Point pSrc = e.getLocationOnScreen();
     
            // Position relative à l'écran du coin haut gauche de mon panel
            Point pDest =  getLocationOnScreen();
     
            // On fait la différence
            int dX = pSrc.x - pDest.x;
            int dY = pSrc.y - pDest.y;
     
            // Et voila le point dans le bon repère
            Point p = new Point(dX, dY);
     
            /* suite du traitement */
     
        }

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

Discussions similaires

  1. comment récupérer une variable dans une autre classe java
    Par realiste dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 19/04/2011, 19h23
  2. récupérer une variable dans un autre swf
    Par sonico dans le forum Flash
    Réponses: 0
    Dernier message: 04/11/2009, 11h25
  3. Récupérer un champs dans un autre
    Par jazz3210 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/07/2009, 02h29
  4. Récupérer une variable dans une autre frame
    Par Debutant39 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/07/2007, 22h27
  5. Réponses: 1
    Dernier message: 06/04/2007, 16h33

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