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

Composants Java Discussion :

[JXTree] Afficher un ToolTip


Sujet :

Composants Java

  1. #1
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut [JXTree] Afficher un ToolTip
    Bonjour,

    J'aimerais afficher un tooltip sur certains noeuds de mon arbre lorsque je me déplace dessus avec la souris.

    Sur le forum, j'ai vu qu'il fallait ajouter cette ligne lors de l'instanciation de mon JXTree :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ToolTipManager.sharedInstance().registerComponent(m_tree);
    J'ai également implémenté un renderer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_tree.setCellRenderer(new MyRenderer());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class MyRenderer extends DefaultTreeCellRenderer {
    		@Override
    		public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
    			super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
     
    			setToolTipText("Mon text");
     
    			return this;
    		}
    	}
    Malgré tout cela, le tooltip ne s'affiche pas.

    Qqun put-il m'éclairer svp ?

    Merci d'avance pour votre aide

  2. #2
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 86
    Points : 174
    Points
    174
    Par défaut
    Salut doons,

    Voici un exemple qui te permet d'afficher le tooltip sur ton JXTree relatif au noeud que tu survoles avec la souris :


    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    import org.jdesktop.swingx.JXTree;
     
     
    public class TestJXtree {
     
        public TestJXtree() {
            final JFrame frame = new JFrame();
     
            MyTreeNode root  = new MyTreeNode("Root", "C'est la racine");
            MyTreeNode node1 = new MyTreeNode("node1", "C'est node1");
            MyTreeNode node2 = new MyTreeNode("node2", "C'est node2");
            MyTreeNode node3 = new MyTreeNode("node3", "C'est node3");
     
            node1.add(node2);
            node1.add(node3);
            root.add(node1);
     
            JXTree tree = new JXTree(root);
            JScrollPane scroll = new JScrollPane(tree);
            tree.setCellRenderer(new MyRenderer());
            ToolTipManager.sharedInstance().registerComponent(tree);
     
            frame.getContentPane().add(scroll);
            frame.setSize(500, 400);
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    frame.setVisible(true);
                }
            });
     
        }
     
        class MyTreeNode extends DefaultMutableTreeNode {
            private final String toolTip;
     
            public MyTreeNode(String nodeName, String toolTip) {
              super(nodeName);
              this.toolTip = toolTip;
            }
     
            public String getToolTipText() {
              return toolTip;
            }
          }
     
     
        class MyRenderer extends DefaultTreeCellRenderer {
            @Override
            public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
                super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
     
                if (value instanceof MyTreeNode ) {
                    setToolTipText(((MyTreeNode) value).getToolTipText());
                }
     
                return this;
            }
        }
     
        public static void main(String[] args) {
            new TestJXtree();
        }
    }
    Si mon message t'a aidé, un petit ne fera pas de mal
    Pensez aussi à

  3. #3
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Hello,

    Merci pour ta réponse.
    Effectivement ça marche bien.

    En fait mon problème c'est que mon renderer étendait une classe qui elle-même étendait DefaultTreeCellRenderer.

    Cette classe rédifinissait la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getTreeCellRendererComponent(...)
    et bien que je mettais mon tooltip arpès l'appel à la méthode , ça ne fonctionnait pas, il fallait sélectionner le noeud pour que le tooltip s'affiche.

    En tout les cas, avec ta solution proposée ça fonctionne très bien. Il faut juste faire attention à la classe qu'on étend

    Merci pour ton aide

  4. #4
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 86
    Points : 174
    Points
    174
    Par défaut
    Citation Envoyé par doons Voir le message
    Hello,

    Merci pour ta réponse.
    Effectivement ça marche bien.

    En fait mon problème c'est que mon renderer étendait une classe qui elle-même étendait DefaultTreeCellRenderer.

    Cette classe rédifinissait la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getTreeCellRendererComponent(...)
    et bien que je mettais mon tooltip arpès l'appel à la méthode , ça ne fonctionnait pas, il fallait sélectionner le noeud pour que le tooltip s'affiche.

    En tout les cas, avec ta solution proposée ça fonctionne très bien. Il faut juste faire attention à la classe qu'on étend

    Merci pour ton aide
    Derien
    Si mon message t'a aidé, un petit ne fera pas de mal
    Pensez aussi à

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

Discussions similaires

  1. Afficher un ToolTip
    Par JohnNC dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 01/10/2008, 09h49
  2. Réponses: 4
    Dernier message: 19/11/2007, 09h03
  3. afficher un tooltip
    Par christianf dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 13/09/2007, 16h13
  4. Réponses: 5
    Dernier message: 13/03/2007, 11h35
  5. [PHP-JS] afficher un ToolTip
    Par tchoukapi dans le forum Langage
    Réponses: 6
    Dernier message: 21/10/2005, 17h44

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