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 :

Capter un evenement de souris pour toute l'appli


Sujet :

AWT/Swing Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3
    Par défaut Capter un evenement de souris pour toute l'appli
    Bonjour,
    j'ai une application java bourrée de jpanel ,de jbutton, etc.......
    Je voudrais trouver un moyen de detecter un clic de souris venant de n'importe quel composant swing .
    Le but est de pouvoir:
    -fermer un jpanel des qu'un clic est effectue n'importe ou
    -de detecter le fait qu'aucun clic de souris n'a été effectué pendant un certain temp.

    Merci

    [ Modéré par Bulbo ]
    Ajout d'un tag dans le titre
    Les Règles du Forum

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 170
    Par défaut
    Je n'en suis pas sur (mais on me reprendra bien assez vite si je me trompe ), mais il faut que tu ajoutes sur chaque composant un MouseListener pour que tu puisses capter n'importe ou le clic de souris.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3
    Par défaut
    le probleme justement , c'est d'éviter de faire un mouselistener sur chaque composant.
    L'ideal serais que la jframe principale capte l'evenement et puisse le renvoyer au listenener du composant.

  4. #4
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Par défaut
    Pas testé, mais je pense qu'une solution serait de placer un listener sur le RootPane de ton objet JFrame (que tu peux récupérer avec la méthode getRootPane)

    http://java.sun.com/docs/books/tutor.../rootpane.html

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3
    Par défaut
    j'ai essayé un mouselistener sur le rootPanel:
    "this.getRootPane().addMouseListener(this);"
    this etant ma jframe implementant MouseListener

    apparemment ca ne marche pas

  6. #6
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 67
    Par défaut
    la solution se trouverait en effet ici:
    http://java.sun.com/docs/books/tutorial/uiswing/components/example-1dot4/index.html#GlassPaneDemo

    IL faut carrement utiliser le Toolkit,Ex:
    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
     //Find out exactly which component it's over.  
                Component component = 
                    SwingUtilities.getDeepestComponentAt(
                                            container,
                                            containerPoint.x,
                                            containerPoint.y);
     
                if ((component != null) 
                    && (component.equals(liveButton))) {
                    //Forward events over the check box.
                    Point componentPoint = SwingUtilities.convertPoint(
                                                glassPane,
                                                glassPanePoint,
                                                component);
                    component.dispatchEvent(new MouseEvent(component,
                                                         e.getID(),
                                                         e.getWhen(),
                                                         e.getModifiers(),
                                                         componentPoint.x,
                                                         componentPoint.y,
                                                         e.getClickCount(),
                                                         e.isPopupTrigger()));
                }

  7. #7
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 67
    Par défaut
    et il faut activer le glassPanel............................

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

Discussions similaires

  1. Hook Application pour capter des evenements.
    Par Silvers dans le forum Développement Windows
    Réponses: 12
    Dernier message: 23/09/2010, 21h13
  2. Style pour toute l'appli
    Par Pol63 dans le forum Windows Presentation Foundation
    Réponses: 22
    Dernier message: 23/02/2009, 22h46
  3. [C#]Catalogue accessible pour toute une appli
    Par Jinroh77 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 22/06/2006, 10h57
  4. capter l'evenement clic sur une cellule d'un string grid
    Par lasconic dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/06/2003, 10h51

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