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 :

Tooltiptext qui me bouffe mon evenement : comment faire?


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 29
    Points : 35
    Points
    35
    Par défaut Tooltiptext qui me bouffe mon evenement : comment faire?
    Bonjour,

    je termine un logiciel de nutrition où il y a un planning. Ce planning est composé d'un JPanel global qui comprend 7 JPanel (1 par jour) qui sont eux même constitués de 12 JLabel (1 par tranche de 2h).
    Quand on clique sur un label, une JDialog s'ouvre pour y affecter un repas. J'ai configuré l'ouverture de la JDialog sur l'évenement MousePressed du JPanel global pour éviter d'implémenter 7x12 évènements mousePressed. Ca fonctionne très bien.

    Le problème c'est qu'une fois que j'ai configuré un repas sur un JLabel, j'affecte à celui-ci un text (le nom du repas) et un tooltiptext qui affiche quelques détails.
    Le souci est que si j'affecte un tooltiptext a un label alors l'evenment mousePressed du JPanel global ne fonctionne plus sur ce label (les labels vides fonctionnent très bien car ils n'ont pas de tooltiptext).

    Quelqu'un pourrait-il m'expliquer d'où vient le problème et comment le résoudre svp?

  2. #2
    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
    Bonsoir,
    parce que le fait d'affecter un tooltip text au label installe un mouseListener sur ce dernier. Donc les événements souris sont transmis au label, et ne sont plus consommés par le panel global. Une solution serait d'installer un mouseListener sur le label dès que tu lui affectes un tooltip text, et de redispatcher l'événement vers le panel global :
    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
    class MouseInputRedispatcher implements MouseInputListener {
      public Component target;
     
      public MouseInputRedispatcher(Component target) {
        this.target = target;
      }
     
      public void mousePressed(MouseEvent ev) {
        redispatch(ev);
      }
      ...
     
      private void redispatch(MouseEvent ev) {
        target.dispatchEvent(SwingUtilities.convertMouseEvent(
                                   ev.getSource(), ev, target));
      }
    }
     
    private MouseInputRedispatcher redispatcher = new MouseInputRedispatcher(panelGlobal);
     
    label.setToolTipText("...");
    label.addMouseListener(redispatcher);
    label.addMouseMotionListener(redispatcher);

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 29
    Points : 35
    Points
    35
    Par défaut
    C'est parfait! ca fonctionne et c'est une solution élégante, merci beaucoup Herve!

    Amicalement,

    Logrus

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

Discussions similaires

  1. [MySQL] Faire un filtre pour mes champs de mon affichage comment faire ?
    Par Debutant10 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 10/05/2012, 20h54
  2. Je m'ennuie pendant mon PFE : Comment faire ?
    Par RodolpheM dans le forum Stages
    Réponses: 10
    Dernier message: 19/04/2011, 13h14
  3. Comment faire un démon qui surveille mon internet ?
    Par ulysse_31 dans le forum Débuter
    Réponses: 4
    Dernier message: 07/03/2009, 11h08
  4. Value = NAN dans mon converter! Comment faire
    Par amandinerenard dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 22/08/2008, 10h52

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