Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : sélectionner un chemin dans un jtree [ Divers / Général ] (pseudo85)

dimanche 23 novembre 2008 à 16:58:09 | sélectionner un chemin dans un jtree

pseudo85

Bonjour,
Dans mon programme, si un noeud "n" est sélectionné dans arbre jTree1, tous ses noeuds parents doivent l'être aussi automatiquement. Pour cela, j'ai fait le code suivant:

   DefaultMutableTreeNode  node = (DefaultMutableTreeNode) jTree1.getLastSelectedPathComponent();
   TreePath  path = new TreePath (node.getPath());
   jTree1.addSelectionPath(path.getParentPath());

Le problème est qu'il ne me sélectionne que le parent direct du noeud et pas les autres parents. Comment faire pour sélectionner tous les parents?

Un autre problème est qu'il faut que mon arbre permettent une sélection multiple

jTree1.getSelectionModel().setSelectionMod (TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);

mais lorsque je sélectionne deux noeuds en même temps,  le jTree1.getLastSelectedPathComponent() ne renvoie pas le dernier noeud sélectionné mais celui d'avant.

Quels est le problème SVP?
Merci pour votre aide.


dimanche 23 novembre 2008 à 17:59:57 | Re : sélectionner un chemin dans un jtree

uhrand

Voici une très belle alternative que j'ai déjà utilisé avec succès dans une application de production et qui fonctionne parfaitement: un JTree avec CheckBoxes. Quand on coche un noeud, tous  les noeuds parents sont cochés également!
http://www.jroller.com/santhosh/date/20050610

lundi 24 novembre 2008 à 19:41:39 | Re : sélectionner un chemin dans un jtree

pseudo85

Merci uhrand pour ta réponse. C'est vrai que c'est nettement mieux avec les checkbox.
J'ai juste un petit problème avec la classe "getTreeCellRendererComponent", plus précisément au niveau de l'instruction:
   checkBox.setState(Boolean.TRUE);   

setState n'accèpte pas le type Boolean comme argument mais un State.
Et c'est la meme chose avec l'instruction:

checkBox.setState(selectionModel.isPartiallySelected(path) ? null : Boolean.FALSE);

Comment faire pour résoudre ce problème?
Merci pour votre aide.

lundi 24 novembre 2008 à 20:32:41 | Re : sélectionner un chemin dans un jtree

uhrand

Réponse acceptée !
Tu as raison, je n'y avais plus pensé. J'avais fais les corrections dans le temps. Le mieux c'est que je te donne les sources telles que je les utilise actuellement:
http://www.java-forum.org/de/userfiles/user3690/treeSupport.zip

lundi 24 novembre 2008 à 22:05:41 | Re : sélectionner un chemin dans un jtree

pseudo85

Merci beaucoup uhrand, ça marche super bien, c génial.

Encore une question, je veux avoir tous les noeuds sélectionnés (donc dans ce cas tous les noeuds cochés). D'habitude, pour avoir ça, je fais:

    TreePath[] paths = jTree1.getSelectionPaths();
     
Avec cette instruction, je n'ai que les chemins qui sont selectionnés, et pas ceux dont les noeuds sont cochés. Comment faire pour avoir les noeuds qui sont cochés?

Merci pour votre aide.


mardi 25 novembre 2008 à 07:29:46 | Re : sélectionner un chemin dans un jtree

uhrand

checkedPaths = checkTreeManager.getSelectionModel().getSelectionPaths();

mardi 25 novembre 2008 à 12:27:13 | Re : sélectionner un chemin dans un jtree

pseudo85

Pardon uhrand, je sais que j'exagère, mais comment déclarer le "checkTreeManager"?
Merci.


mardi 25 novembre 2008 à 14:15:46 | Re : sélectionner un chemin dans un jtree

pseudo85

Désolé, il suffit juste de faire:
// makes your tree as CheckTree
CheckTreeManager checkTreeManager = new CheckTreeManager(yourTree);

// to get the paths that were checked
TreePath checkedPaths[] = checkTreeManager.getSelectionModel().getSelectionPaths();

Merci encore uhrand pour ton aide.

mardi 25 novembre 2008 à 14:57:59 | Re : sélectionner un chemin dans un jtree

pseudo85

Bonjour,
Encore une question, j'ai remarqué que cette instruction:
checkedPaths = checkTreeManager.getSelectionModel().getSelectionPaths();

ne donne pas les chemins en entier (jusqu'au feuilles) qui sont obtenus en cochant un noeud parent, et donc automatiquement ses noeuds fils sont sélectionnés. Cette instruction ne donne pas le chemin complet (le chemin ne va pas jusqu'au fils).
Je ne comprend pas pourquoi?
Merci pour votre aide.

mardi 25 novembre 2008 à 17:16:34 | Re : sélectionner un chemin dans un jtree

uhrand

Oui, c'est un peu déroutant, mais c'est voulu ainsi: un noeud sélectionné signifie automatiquement que les enfants sont sélectionnés également. En fait, ce serait une redondance de retourner explicitement tous les enfants.


1 2

Cette discussion est classé dans : problème, sélectionner, noeud, parents, jtree1


Répondre à ce message

Sujets en rapport avec ce message

Problème avec un JScrollPane [ par exarkun02 ] BonjourJ'ai besoin d'utiliser un JScrollPane dans un champ de texte que je dois remplir à l'aide d'une base.Il faut que je puisse cliquer sur chaque é Sélectionner un élément dasnun JTextArea [ par exarkun02 ] Bon chuis toujours avec la même fenêtre que dans mon précédent message, mais maintenant les ascenseurs marchent.Mais bon j'arrive toujours pas à récup .class problème [ par sneark ] Bon je suis le débutant des débutant...Bon alors j'ai esseye de mettre un applet sur mon site mais ça a foirer: http://tout.cara.free.fr/merde.htmJ'ai Scroll sur objet graphique... [ par Mikonyx ] Salut, mon problème est le suivant, j'ai inséré une image à travers un composant java2d sur un jpane, j'ai ensuite inséré ce jpane sur un jscrollpane Problème de variable d'environnement [ par malcom78 ] Bonjour a tous, Je débute en java, et je ne sais pas ou se trouve sur win98 la variable d'environnement "Path" alors si vous pouviez m'aider SvpMerci Problème d'exécution d'une applet [ par Vilinfo ] Bonjour,J'ai téléchargé le JDK 1.4 et j'utilise Internet Explorer 6.Lorsque je veux visionner mon applet dans une page HTML, j'ai un pavé gris à la pl une ligne et un polygone convexe [ par rekam ] Bonjour à tous !Je me trouve devant un problème assez compliqué à résoudre. J'ai un polygone convexe, de la forme d'un T, affiché à l'écran (il représ problème de ResultSet [ par GroSam ] Salut!Alors voila j'ai un problème avec un resultset:[connexion...]ResultSet rs = stmt.executeQuery ("select * from table); metho Problème avec un menu [ par schub1015 ] J'ai récupérer un menu en javascript. C un menu qui se met an haut de la page (à l'horizontal) et qui se développe si la souris passe sur certaines zo problème avec un menu... [ par blubsy ] Bonjour, j'ai mis une applet java sur mon site pour le menu, et tous marche, mais voila si je modifi la taille de ma fenètre dans windows toute la pag


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,733 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.