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

Interfaces Graphiques en Java Discussion :

GlassPane et mouseEvent


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut GlassPane et mouseEvent
    Bonjour,

    Je fais actuellement une tentative d'implementation d'un glassPane, qui me permettrait de faire apparaitre un menu contextuel (popupMenu), ce menu je souhaite le dessiner moi meme, d'ou l'utiliter du JGlassPane.

    Lorsque je fait une simple JFrame sans rien dedans et le glassPane qui est un JPAnel par dessus j'arrive a recuperer l'evenement click droit de la souris et faire apparaitre un menu.

    Par contre lorsque j'ajoute ce meme glasspane a une interface complete avec JSplitPane et autres formulaires, j'ai un probleme qui j'imagine est un grand classique quand on fait un glasspane, le glasspane capte tous les evenements du coup mon appli ne reagit plus a aucun evenements de la souris, j'ai vaguement entendu parler de redispatcher mais j'ai pas trouver comment faire !!
    UML avec VIOLET

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 31
    Points : 34
    Points
    34
    Par défaut
    Salut,

    J'ai utilisé un glassPane pour redefinir un curseur de souris, et j'ai mis en place un dispatcher d'evenement souris pour les rediriger vers l'application :
    http://www.developpez.net/forums/sho...d.php?t=234081

    J'espère que ça va t'être utile
    The first Rule of the fight Club is , you don't talk about fight club ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Merci,maintenant je me sers de ta methode redispatchMouseEvent:

    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
    private void redispatchMouseEvent(MouseEvent e) {
     
         Point glassPanePoint = e.getPoint();		
         Container container = this.container;
         Point containerPoint = SwingUtilities.convertPoint(this.glassPaneComponent, glassPanePoint,  this.container);
     
         if (containerPoint.y > 0) {         
              Component component = SwingUtilities.getDeepestComponentAt(container, containerPoint.x, containerPoint.y);
     
              if (component != null) {
     
                   Point componentPoint = SwingUtilities.convertPoint(this.glassPaneComponent,  glassPanePoint, component);                
                   component.dispatchEvent(new MouseEvent(
                   component, e.getID(), e.getWhen(), e.getModifiers(), 
                    		componentPoint.x,  componentPoint.y,  
                    		e.getClickCount(),  e.isPopupTrigger()));
              }
         }        
    }
    Et effectivement la quasi totalité des evenements sont transmis aux composant inferieur.

    Mais il me reste un soucis, j'ai bien mis pour toutes les methodes de mouseListener et MouseMotionListener l'appel a ta methode redispatcherEvent mais dans mon appli j'ai un JSplitPane qui normalement lorsqu'on click sur la barre de separation on peut la deplacer hors la on peut cliquer dessus mais impossible de la "dragndroper" a gauche ou a droite !!!

    je ne sais pas si c'est propre au Jsplitpane ou au dragndrop !!!
    UML avec VIOLET

  4. #4
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Il ne faut pas utiliser de dispatcher d'événement mais il faut ajouter la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    @Override
    public boolean contains(int x, int y) {
      return false;
    }
    Plus d'infos ici : http://weblogs.java.net/blog/alexfro...behaved_g.html
    Romain Guy
    Android - Mon livre - Mon blog

Discussions similaires

  1. [MouseListener] sur plusieurs composants... GlassPane ?
    Par lilou77 dans le forum Composants
    Réponses: 7
    Dernier message: 05/12/2005, 10h13
  2. [MouseEvent] arret de souris = repaint() ?
    Par n00bi dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 08/06/2005, 11h38
  3. [Débutant]MouseEvent et InputEvent
    Par lejimi dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 09/11/2004, 19h41
  4. [Java2D]MouseEvent sur un paint Graphics g
    Par tahiti bob dans le forum 2D
    Réponses: 9
    Dernier message: 09/10/2004, 22h15
  5. Réponses: 7
    Dernier message: 03/08/2004, 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