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 :

Obtenir le composant sous la souris


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Points : 94
    Points
    94
    Par défaut Obtenir le composant sous la souris
    Bonjour à tous,

    Voilà 2 heures que je fais des recherches sur le net mais san succès.

    J'ai une JFrame principale pour mon appli. A l'intérieur, tous les différents JPanel et autres composants Swing inclus.

    Je cherche à obtenir le composant (visible) placé sous la souris au moment où je clique sur un des boutons de la souris.

    J'ai lu des choses sur SwingUtilities.getDeepestComponentAt() mais çà ne me donne rien et sur l'utilisation de GlassPane, mais me paraît un peu compliqué (pour gérer les Event des autre composants).

    N'y aurait-il pas une manière simple du genre (this étant ma JFrame principale) ? :

    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
    // Ajout d'un MouseListener
    		this.addMouseListener(new MouseAdapter() { 
    			public void mousePressed(MouseEvent e) { 
     
    //				System.out.println(e.getX() + "\t" + e.getY());
    				print(e);
     
    			} 
    		}); 
    	}
     
    	void print(MouseEvent e) {
     
    		System.out.println(SwingUtilities.getDeepestComponentAt(this, e.getX(), e.getY())); 
    	}
    Merci d'avance pour votre aide !

  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 : 43
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Ton problème n'est pas clair. Tu souhaites connaitre le composant au moment du clic, ou avant le clic ?
    Pourquoi souhaites-tu savoir ça ? Il y a peut-être une meilleure façon de faire, en fonction de tes besoins.

  3. #3
    Membre actif Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Points : 251
    Points
    251
    Par défaut
    ça c'était à l'époque ou je faisais du C .je dessinais mes composants et je suis la souris jusqu'à clic, je récupère les coordonnées et je vérifie c'est quel composant mais en java c'est plus simple. c'est plutôt sur le composant que tu définis l'action à faire lorsqu'un clic survient. Il suffit de définir un listener dessus avec addmouselistener et puis de mettre tes actions dans les fonctions onMouse...

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Points : 94
    Points
    94
    Par défaut
    @dinobogan : c'est égal, soit avant le clic, par exemple en affichant en instantané dans la console le nom des composants lorsque la souris passe dessus, ou au moment du clic sur un composant.

    @jiddou : j'avais fait comme tu dis avant mais je souhaiterai justement éviter de devoir mettre des listeners sur chaque composant.

  5. #5
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Essaie ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
     
          @Override
          public void eventDispatched(AWTEvent e) {
            if (e.getID() == MouseEvent.MOUSE_PRESSED) {
              MouseEvent me = (MouseEvent) e;
              Point p = me.getLocationOnScreen();
              SwingUtilities.convertPointFromScreen(p, yourJFrame);
              System.out.println(SwingUtilities.getDeepestComponentAt(yourJFrame,
                      p.x, p.y));
            }
          }
        }, AWTEvent.MOUSE_EVENT_MASK);

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Points : 94
    Points
    94
    Par défaut
    Çà marche du tonnerre herve91 !!! Exactement ce qu'il me fallait !

    Merci à tous !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/05/2013, 07h46
  2. [C#] Déplacer un composant avec la souris
    Par GéniuS77 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 07/04/2011, 23h12
  3. [IDE][VS2003]Comment obtenir l'Intellisense sous VB.Net?
    Par joKED dans le forum Visual Studio
    Réponses: 5
    Dernier message: 22/03/2006, 10h14
  4. Afficher texte sous la souris
    Par lordenzo dans le forum Flash
    Réponses: 5
    Dernier message: 15/03/2006, 17h06
  5. Trouver le composant sous la souris...
    Par BestofMac dans le forum Composants VCL
    Réponses: 2
    Dernier message: 17/07/2002, 02h46

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