cs_cbil
Messages postés140Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention15 mai 2008
-
24 mai 2006 à 14:53
cs_cbil
Messages postés140Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention15 mai 2008
-
8 juin 2006 à 10:47
Bonjour tout le monde !
J'ai quelques petits soucis avec les JTree, c'est la premiere que je m'en sers. J'ai creer un arbre JTree avec une serie de noeud et sous-noeud de type DefaultMutableTreeNode. Je souhaiterez mettre un tooltip sur chaque noeud mais aucune methode n'existe avec la classe DefaultMutableTreeNode. Comment faire ? Y a t-il une alternative au lieu d'utiliser DefaultMutableTreeNode ?
uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 8 juin 2006 à 06:36
Bonjour cbil.
Je suis désolé de la confusion que j'ai causé. En fait, la réponse concernant le addNode est destiné à makni qui évoquait ce problème dans sa réponse à lui (voir plus haut).
Ce que tu dois faire c'est indiqué dans la réponse concernant le ToolTipManager:
1. enregistrer le JTree auprès du ToolTipManager.
2. enregistrer MyRenderer auprès du JTree
3. adapter la logique de MyRenderer à tes besoins (ici tu as peut-être des problèmes?)
cs_cbil
Messages postés140Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention15 mai 20081 8 juin 2006 à 10:47
Cool merci, c'est bien Value mon objet NoeudArbreXML :
Mes test provoquer une erreur car l'objet n'etait sans doute pas toujours un NoeudArbreXML.
Pour verifier si value etait bien mon objet NoeudArbreXML, j'ai fais ca :
setToolTipText(value.getClass().getName());
Sinon pour getTreeCellRendererComponent, si on ajoute un parametre comme mon string tooltip, ca marche plus apres.
Enfin voila, ca marche nickel maintenant merci beaucoup uhrand
Voici mon renderer final :
private class MyRenderer extends DefaultTreeCellRenderer {
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.getClass().equals(NoeudArbreXML.class)) //Pour verifier si c'est bien la classe concernée
setToolTipText(((NoeudArbreXML) value).getToolTipNoeud());
return this;
}
}
cs_makni
Messages postés15Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention31 mai 2006 24 mai 2006 à 23:47
Salut regarde est ce k'il ya setTooltipText sur defaultMutableTreeNode, je v t'envoyer une adresse d'un site que tu trouvera solution a ton probleme que je n'ai pas en ce moment , mais je vous prie de m'aider , g une Jtree qui affiche les fichiers d'un dossier et je ve qd j'ajoute un autre fichier le Jtree affiche le noeud du nouveau fichier , g essayé et j'ai pas trouvé sachant que je travaille avec defaultMutableTreeNode.
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_cbil
Messages postés140Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention15 mai 20081 7 juin 2006 à 16:59
Bonjour Uhrand, j'avais essayé mais pas reussi et laisser tomber pour le moment. Mais à présent, j'en ai besoin (des tooltip) pour un autre arbre de mon programme.
Je ne comprend pas comment utiliser le code que chaque noeud ou feuille est son propre tooltip vu que c un JTree qui est utilisé. Je ne comprend pas non plus le rapport entre Tooltip et addNode ? (addNode n'est pas utilisé)
cs_cbil
Messages postés140Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention15 mai 20081 8 juin 2006 à 10:36
Bonjour,
C'est moi qui suis désolé, j'ai mal relu l'ensemble.
J'ai un peu pres compris l'ensemble du code, le tooltip fonctionne. Mais je n'arrive pas à personnaliser le tooltip en fonction du noeud.
D'apres ce que j'ai compris, le MyRenderer (ou plutot la methode get...)est appelé à chaque ajout d'un noeud. - Est-il possible et comment d'acceder au noeud ou l'objet de ce noeud pour connaitre le tooltip ?
- Ou alors, en mettant un nouveau parametre String tooltip puis setTooltip dans la methode, est-il possible de preciser la valeur du parametre et à quel moment ?
- Qu'est ce que le parametre Object value, le noeud en cours ? j'ai essayé avec une concatenation de DefaultMutableTreeNode ou NoeudArbreXML mais ca ne marche pas, erreur d'execution.
(car je ne vois pas ou sont entré ces parametres, tout se fait automatiquement à l'appel de la methode on dirait,).
Dans mon programme, un noeud est sous la forme d'un objet d'une classe avec extends extends DefaultMutableTreeNode :
public class NoeudArbreXML extends DefaultMutableTreeNode
{
setToolTipText(tooltip);
(ou setToolTipText( l'objet de la classe NoeudArbreXML avec acces à la methode getToolTipNoeud() ) )
return this;
}
}
Pour la creation de mon arbre, j'ai une methode creationArbre() qui créé le JTree (c'est ici que j'ai mis les fonction du renderer et tooltipmanager), une fois l'instance du JTree créé, une seconde methode unArbre est appelé pour qui créé chaque noeud NoeudArbreXML selon l'arborescence voulu, elle renvoie le noeud principal.
public JTree creationArbre(String affichage)
{
JTree monArbre = new JTree();
ToolTipManager.sharedInstance().registerComponent(monArbre);
MyRenderer rendu = new MyRenderer(); //c'etait au cas ou j'ai besoin de l'instance rendu apres sinon un new .... suffisait en parametre
monArbre.setCellRenderer(rendu);
NoeudArbreXML tn = unArbre(traitement.getRacine(), affichage); //tn le NoeudArbreXML racine
monArbre.setModel (new DefaultTreeModel(tn));
monArbre.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
monArbre.addTreeSelectionListener(this);
return monArbre;
}
Merci beaucoup !
J'espere que ce que j'ai ecrit n'est pas trop galere à comprendre ^^