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 :

[JTree] ToolTipText sur chaque node


Sujet :

Composants Java

  1. #1
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut [JTree] ToolTipText sur chaque node
    Bonjour à tous,


    J'utilise un jtree pour afficher un arbre xml, pour chaque node j'ai un texte que j'aimerais afficher comme tooltiptext au moment ou l'utilisateur choisit un noeud dans l'arbre.

    Malheureusement cela ne fonctionne.

    Voici le code utilisé.

    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
    class  SelectOneControl_AsTreeRenderer extends DefaultTreeCellRenderer
        {
            public SelectOneControl_AsTreeRenderer()
            {
                super();
            }
     
            public Component getTreeCellRendererComponent( JTree tree,
                                                           Object value, boolean selected,
                                                           boolean expanded,
                                                           boolean leaf,
                                                           int row,
                                                           boolean hasFocus)
            {
                JLabel label = (JLabel)super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
                setOpaque(true);
                label.setText((value == null) ? "" : value.toString());
     
                if (selected)
                {
                    label.setBackground(Color.LIGHT_GRAY);
                    label.setForeground(tree.getForeground());
                    label.setToolTipText(formatToolTipText(m_selectedHint));
     
                }
                else
                {
                    label.setBackground(tree.getBackground());
                    label.setForeground(tree.getForeground());
                }
                label.setFont(tree.getFont());
                return label;
            }
        }
    Si quelqu'un a une idée du problème, elle est la bienvenue.

    D'avance pour vos réponses

  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
    Bonjour,

    la réponse est dans le tutorial de Sun

    http://java.sun.com/docs/books/tutor...e.html#display

    il faut que tu ajoutes la ligne suivante pour permettre l'affichage des tooltips sur ton arbre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ToolTipManager.sharedInstance().registerComponent(tree);

  3. #3
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Cela ne marche pas chez moi.

    Pourtant j'ai téléchargé la classe de sun et je l'ai testée mais elle ne fonctionne pas non plus.

  4. #4
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Citation Envoyé par Stessy
    Cela ne marche pas chez moi.

    Pourtant j'ai téléchargé la classe de sun et je l'ai testée mais elle ne fonctionne pas non plus.
    Désolé j'ai rien dit.
    Cela fonctionne bien avec l'appli de Sun.
    Maintenant reste à savoir pourquoi cela ne marche pas de mon coté. On dirait qu'il n'y a rien dans le tooltip.
    je vais un peu creuser et voir ce qui ne va pas.

    En tout cas merci d'avoir éclairé ma lanterne.
    Le pire c'est que j'avais été voir ce tuto, et j'était passé au dessus de cette astuce pour le tooltip

  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
    Ce n'est pas sûr que ça vienne de chez toi, car en regardant plus en détail le javadoc de la classe ToolTipManager, en particulier la méthode mousePressed, il est dit que
    Called when the mouse is pressed. Any tool tip showing should be hidden
    donc tu ne pourras pas afficher de tooltip au moment où l'utilisateur choisit un noeud dans l'arbre. Il faudra qu'il déplace la souris juste après avoir sélectionné le noeud et qu'il attende que le tooltip s'affiche.
    Essaie de sortir la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    label.setToolTipText(formatToolTipText(m_selectedHint));
    du "if" pour voir...

  6. #6
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    J'avais déjà fait un test en mettant cette ligne en dehors du if et cela fonctionnait dans le sens qu'à la place d'avoir un tooltip j'avais un point. Donc cela voulait dire que le tooltip fonctionait mais qu'il n'y avait rien dans la variable m_selectedHint.

    Je suis en train de voir pour améliorer mon code pour qu'il trouve une valeur au moment de l'instanciation de la classe.

    J'avais pensé à utiliser un Vector qui contiendrait mes hints mais le problème est que lorsque j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    label.setToolTipText(formatToolTipText(monVector.get(row)));
    j'ai un ArrayIndexOutOfBoundsException.

    J'ai voulu afficher la valeur de row lors de l'instanciation et cela me sort de nombres bizarres 0,1,2,3,-1,0,1,2,3,0,0,3,2,1,......

    Par contre si j'utilise cette ligne dans le if, je n'ai pas d'exception mais cela ne s'affiche pas

  7. #7
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Problème résolu.

    J'ai ajouté un petit if

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(row != -1)
                setToolTipText(formatToolTipText((String)m_selectedHint.get(row)));
    Un grand pour ton aide

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

Discussions similaires

  1. afficher des informations de chaque node d'un jtree
    Par doudou7777 dans le forum Général Java
    Réponses: 5
    Dernier message: 04/04/2014, 09h54
  2. [Jtree] survol de souris sur un node
    Par mavina dans le forum Composants
    Réponses: 1
    Dernier message: 05/01/2010, 13h18
  3. [JTree]Focus sur node et raffraichissement
    Par Invité1 dans le forum Composants
    Réponses: 3
    Dernier message: 29/12/2007, 12h27
  4. Réponses: 3
    Dernier message: 12/09/2006, 16h31
  5. TTreeView + 4 CheckBox sur chaque Node
    Par smartland dans le forum Delphi
    Réponses: 1
    Dernier message: 17/06/2006, 02h00

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