begin process at 2012 02 04 16:48:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Swing

 > JCHECKBOXTREE : JTREE AVEC JCHECKBOX À CHAQUE NOEUD (SOURCE COMPLET)

JCHECKBOXTREE : JTREE AVEC JCHECKBOX À CHAQUE NOEUD (SOURCE COMPLET)


 Information sur la source

Note :
9,2 / 10 - par 5 personnes
9,20 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Swing Niveau :Initié Date de création :07/12/2004 Date de mise à jour :29/11/2005 18:32:05 Vu / téléchargé :13 513 / 2 504

Auteur : Isammoc

Ecrire un message privé
Commentaire sur cette source (56)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce code, permet l'utilisation d'un JTree avec un JCheckBox à chaque noeud.
On récupère ce qui a été sélectionné avec le TreeSelectionModel associé.

Vu que c'est une extension de JTree, le JCheckBoxTree s'utilise comme n'importe quel JTree, de plus on peut lui affecter n'importe quel TreeCellRenderer.
Je n'ai pas testé avec un TreeCellEditor.


 Conclusion

Etant très demandé dernierement, ce bout de code m'a permis de continuer mon projet, je vous en faire part ;-P

De plus, je ne l'ai pas encore très bien commenté, cela reste à faire également.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

07 décembre 2004 15:16:24 :
J'avais oublié les sources, oups...
07 décembre 2004 19:02:37 :
Bug corrigé: lors de la sélection/déselection d'un noeud fils, le noeud père n'est pas raffraichi... à corriger donc (mais je ne sais pas comment).
29 novembre 2005 18:32:05 :
Mis à jour de l'exemple pour qu'il n'y ait qu'une case à cocher par élément.

 Sources de la même categorie

Source avec Zip Source avec une capture BANNIÈRE EN SWING : TEXTE DÉFILANT SUR UN JLABEL par Julien39
Source avec Zip Source avec une capture INDICATEUR D'ACTIVITÉ ANIMÉ par Julien39
Source avec Zip Source avec une capture JGRAPH : COMPOSANTS SWING CUSTOMISÉS par Julien39
Source avec Zip Source avec une capture JTABLE CUSTOMISÉE par Julien39
Source avec Zip Source avec une capture BARRE D'ATTENTE CIRCULAIRE par Julien39

Commentaires et avis

Commentaire de Isammoc le 27/12/2004 15:09:55

Merci de laisser votre avis, vos commentaires, etc...

Commentaire de wenders77 le 20/05/2005 12:16:09

Salut Isammoc et merci infiniment pour ton code: c'est exactement ce que je cherchais et, à part le bug que tu as signalé, ça marche parfaitement.

Par contre, tes sources sont très conséquentes (faut ce qu'il faut!) et, comme tu le dis toi-même, pas parfaitement commentée. Je me pose donc des questions sur les TreeSelectionModel.

Perso, je voudrais savoir uniquement si les noeuds terminaux (les feuilles) ont été sélectionnées ou non, et récupérer l'info dans un tableau de booléens. Est-ce que tu pourrais me dire comment faire s'il te plait?

D'avance merci,

Wenders

Commentaire de Isammoc le 20/05/2005 14:25:53

Au moins, cela aura été utile à quelqu'un...

Mes sources sont en regle général un léger copier coller des sources disponibles de chez sun. (il me semble qu'on peut les reprendre si on a besoin de les modifier, si tel n'est pas le cas, qu'on me le dise)

Sinon, tu peux savoir si tel objet est sélectionné ou pas. Donc tu peux (toi meme) faire un tableau des TreePath de tes objets feuilles et demander à chaque fois ci c'est sélectionné ou pas.

Un écouteur sur les sélections est possible également.

Bon courage. Et si tu as du code, n'hésite pas :)

Commentaire de brous le 16/09/2005 21:32:55

merci pour le code, j'ai ajouté une option permettant de ne mettre en checkbox que les feuilles.

pour ce faire, dans CheckBoxTreeCellRenderer,
modifier la méthode getTreeCellRendererComponent
à la fin : remplacer "return this;" par :
    if(!leaf){
       this.remove(jcb);
    }
    return this;
}

il faut aussi supprimer la propagation par un :
defaultCheckboxTreeSelectionModel.setSelectionMode(DefaultCheckboxTreeSelectionModel.ALONE_MODE);

bravo pour le code

je peux rendre propre l'option que j'utilise si cela intéresse l'auteur initial.

cela signifierait créer une option dans CheckBoxTreeSelectionModel.

A+


Commentaire de Isammoc le 19/09/2005 00:04:31

Oui, je suis preneur pour de telles options, tant que ca reste compatible avec un JTree

Commentaire de bullgr82 le 23/11/2005 11:16:09

Salut et merci pour le code, j'en avais justement besoin pour une application.
Par contre, j'aimerais savoir si le screenshot que tu as mis correspond bien à cette version du code car quand j'exécute celui-ci, j'obtiens deux checkbox l'une à côté de l'autre au lieu d'une seule. De plus lors d'une sélection partielle, je n'ai pas la checkbox cochée en gris à côté du parent.

j'ai essayé la compilation sous jbuilder et sous eclipse mais le résultat est le même.

Merci d'avance

Commentaire de Isammoc le 23/11/2005 15:16:40

Euh... Il me semble bien que ca marche correctement...

Commentaire de bullgr82 le 24/11/2005 09:46:35

Je me suis dit que cela pouvait venir de l'ordinateur sur lequel j'ai testé ton exemple mais en testant chez moi j'obtiens la même chose.
Est-ce que cela peut venir de la version de java utilisée ?
Normalement, l'environnement sur lequel je le fait tourner ne devrait pas influer.
J'essaierai de mettre une image de ce que j'obtiens pour que tu vois mieux.

Commentaire de bullgr82 le 26/11/2005 12:23:58

Voilà ce que j'obtiens en compilant ton code : http://laurentmanciet.free.fr/JTreedouble.jpg

Commentaire de Isammoc le 26/11/2005 16:47:45

Bizarre autant qu'étrange...

Je vais voir ce que je peux faire, dès que j'aurais formater mon windows, lol

Commentaire de Isammoc le 29/11/2005 18:30:42

Ah oui!!! Ca y est, je m'en souviens
Dans le test, j'ai oublié d'enlever un truc... Voila c'est arrangé

Commentaire de bullgr82 le 30/11/2005 11:03:06

Merci beaucoup :)

Commentaire de bullgr82 le 30/11/2005 11:20:24

J'ai encore une question.
Je suis un petit peu perdu dans ton code aussi j'aimerai savoir comment tu fais pour cocher une CheckBox du JCheckBoxTree sur déclenchement d'un évènement extèrieur.
Par exemple, j'ai des checkbox ".doc",".xls",etc
Et sur sélection/désélection de ces CheckBox, je voudrais cocher dans le JCheckBoxTree les feuilles dont le nom est par exemple "fichier1.doc" ou "fichier2.xls".
J'arrive plus ou moins à me promener dans l'arbre mais je ne sais comment accéder à la CheckBox.
Merci encore pour ton aide.

Commentaire de Isammoc le 30/11/2005 12:03:19

Oula... Faut vraiment que je replonge dans mon code...

Ca doit etre comme dans un JTree classique, puisque mon but était de refaire la meme chose...

Si je me souviens bien, il faut récupérer le modèle de sélection (getSelectionModel sur l'arbre) et faire un addSelectionPath(path)
avec path, le chemin de ton objet à sélectionner.

Commentaire de bullgr82 le 30/11/2005 15:51:44

Je te remercie, j'ai effectivement réussi avec un getSelectionModel et un addSelectionPath(path)
Ne subsiste qu'un léger problème de propagation des sélections.
Quand je sélectionne un noeud, pas de problème tout se sélectionne. De même si je déselectionne un élément après une sélection totale, j'ai bien la case sélectionnée en grisé (sélection partielle).
Par contre si dans mon arbre, je n'ai rien de sélectionné et que j'en sélectionne une, la case du noeud parent ne se sélectionne pas en grisé. De plus, si je sélectionne un à un tous les fils d'un noeud, celui-ci n'est pas sélectionné.

Commentaire de Isammoc le 01/12/2005 00:50:00

Tout ca est fort possible...

Si tu arrive à le faire, envoie moi les fichiers sur isammoc (chez) yahoo (point) fr

Je le mettrai en ligne et ca profitera à tout le monde

Commentaire de bullgr82 le 06/12/2005 22:46:33

Y'a pas de problème, si j'y arrive, je t'enverrai le code.
Par contre, je vais encore t'embêter mais comment je fais pour changer les icones ?
Si par exemple dans mon arbre, j'ai un fichier pdf, je voudrais lui associer une image pdf. De même si c'est un fichier html, j'aimerai lui associer une icone html.
merci encore

Commentaire de Isammoc le 07/12/2005 11:42:59

Tu regardes les tutoriels pour les JTree.. C'est exactement la meme chose

Commentaire de ben_abid le 27/09/2006 11:52:38

Bonjour,
Je voulais savoir comment pourrai je récupérer les valeus des checkbox cochés ( et non pas séléctionnée) d'un Jtree.
Merci d'avance

Commentaire de Isammoc le 27/09/2006 16:50:22

"checkbox cochés ( et non pas séléctionnée)"

Comment ca ?

Les cellules selectionnées sont celles qui sont cochées, c'était le but de mon petit objet...

Peux tu préciser ta question ?

Commentaire de ben_abid le 27/09/2006 17:16:54

Bonjour,
tree.getSelectionPath(): me retourne le premier noeud séléctionné (en bleu) qu'il soit coché ou pas. Y aurai il un moyen pour récupérer directement à partir de "Jtree" les checkbox cochés : tree.????

Commentaire de Isammoc le 27/09/2006 18:17:23

Euh, cela fait longtemps que je ne me suis pas plongé dans le code...
Mais cela me parait bizarre que tu puisse avoir des noeuds selectionné (en bleu)...
Je pensais avoir fait en sorte que non...

Recupere le SelectionModel, et vérifies bien que c'est CheckBoxTreeSelectionModel
si oui, bah, regarde les selections sur celui là, sinon, c'est qu'il y a un soucis...

Désolé de ne pas pouvoir t'aider plus que ca, je suis débordé dans mon boulot.
Toutes mes excuses

Commentaire de ben_abid le 27/09/2006 23:31:09

Bonsoir,
Merci beaucoup pour ta réponse, Pas la peine de s'excuser.
Bon courage pour ton boulot.

Commentaire de ced46 le 20/04/2007 13:15:44

En selectionnant un noeud, est il possible que tous les enfants ne soit pas selectionnés? si oui, comment modifier le code?

Merci

Commentaire de Isammoc le 20/04/2007 13:29:28

Oui, c'est possible, il faut regarder les options disponibles du DefaultCheckBoxTreeSelectionModel.setSelectionMode(int mode)
et mettre le mode à CheckBoxTreeSelectionModel.ALONE_MODE si je ne m'abuse

depuis ton arbre tree :
((DefaultCheckBoxTreeSelectionModel)tree.getSelectionModel()).setSelectionMode(CheckBoxTreeSelectionModel.ALONE_MODE);


Enfin, d'après mes souvenirs... Ca fait un bout de temps.

Commentaire de MLD_Valus le 02/04/2008 11:36:14

bonjour ! pouvez vous m'expliquer comment integrer ce JTree a une JScrollPane déja éxistante ? j'essaies de faire un maJscroll.add(jt); mais le tree ne s'affiche pas .

Cordialement,

Valentin

Commentaire de Isammoc le 03/04/2008 11:14:05

Bonjour,
De base, je dirai de l'utiliser pratiquement comme un JTree normal.

Il faudrait que tu me donnes un bout de ton code pour que je comprenne ce qui ne va pas.

De plus, je pense que ce code n'est plus valable avec les nouvelles JVM... Il faudrait que je regarde à nouveau pour le mettre à jour.

PS: J'ai peut-être l'idée qu'il faut donner une taille minimal et/ou une taille préférée pour l'intégrer à un JScrollPane.
As-tu essayé ce composant sans fioriture ? (le tester dans une fenêtre tout seul, par exemple)

Bon courage,

Commentaire de MLD_Valus le 03/04/2008 11:17:22

j'ai réussi finallemnt (le code est compatible avec la nouvelle version) mais la question que je me pose est la suivante :

est il possible d'enlever les icones du JTree (celles qui représente le noeud et la feuille apres la checkbox) ? si oui comment faut-il proceder ?

cordialement, valus

Commentaire de Isammoc le 03/04/2008 12:45:00

Ca, c'est lié au JTree lui meme.
Il faut changer le TreeCellRenderer
Regarde les tutos pour les JTree. Ca doit etre la meme chose.

Cordialement,

Commentaire de MLD_Valus le 08/04/2008 09:46:23

j'ai encore une petite question a te poser Isammoc!

voila j'ai cree un JCheckBoxTree en ajoutant à chaque noeud un Objet. J'aimerais que lorsque je clique sur un noeud, je puisse acceder a une méthode de l'objet coché. J'essaies de manipuler la méthode valueChanged de la classe DefaultCheckBoxTreeSelectionModel mais sans grand succes jusqu'a présent.

Pourrais tu me venir en aide ?

merci

Commentaire de Isammoc le 08/04/2008 15:23:03

Quand il est cliqué ? ou quand il est sélectionné/déselectionné ?

valueChanged a comme paramètre un TreeSelectionEvent
qui te permet de savoir les différents paths qui sont touchés par la modification.
Chaque path te permet de récupérer l'objet au bon endroit, apres, tu peux en faire ce que tu veux...

Sinon, envoie ici la portion de code...

Ca peut m'aider aussi à comprendre ton problème.

Commentaire de Isammoc le 08/04/2008 15:28:03

Désolé du double post, mais voilà un lien qui pourra t'être utile...
http://java.sun.com/docs/books/tutorial/uiswing/events/treeselectionlistener.html

Commentaire de MLD_Valus le 08/04/2008 15:48:56

en fait  voila ce que j'aimerais faire (en gros).

dans un JCheckBoxTree j'ai une liste d'elements de ce type :

[]Noeud1
  []fils 1
  []fils2
  []fils3
[]Noeud2
  []fils1


j'aimerais que lors d'une selection (quand on coche la checkbox) je puisse récuperer l'user object associé.

j'ai essayé avec
Object _lastSelected = ((Object)_fils.getLastSelectedPathComponent());

mais ceci me renvoie toujours le même objet ...(le premier que j ai cliqué).
mais ceci me renvoies toujours le même

Commentaire de Isammoc le 08/04/2008 17:51:25

void valueChanged(TreeSelectionEvent e) {
  TreePath[] paths = e.getPaths();
  for(int i = 0; i < paths.length; i ++) {
    Object o = paths[i].getLastPathComponent();
    System.out.println("Objet de type : " + o.getClass() + "; valeur = " + o);
  }
}


Ca, ca marche ?

Commentaire de MLD_Valus le 09/04/2008 09:46:57 10/10

effectivement ça marche mais j'ai du mettre en commentaire une partie du reste de la méthode :

/*
            if (this.mode == CheckBoxTreeSelectionModel.BUNCH_MODE)
            {
                TreePath os[] = event.getPaths();
                Vector v = new Vector();
                for (int i = 0; i < os.length; i++)
                {
                    if (os[i].getParentPath() != null)
                    {
                        v.add(os[i].getParentPath());
                    }
                }
                if (v.size() > 0)
                {
                    boolean[] bb = new boolean[v.size()];
                    Object[] paths = v.toArray();
                    TreePath[] tps = new TreePath[v.size()];
                    for (int i = 0; i < v.size(); i++)
                    {
                        bb[i] = true;
                        tps[i] = (TreePath)paths[i];
                        System.out.println("test 1:"+paths[i].toString());
                        
                    }
                    System.out.println(v.toArray());
                    this.valueChanged(new TreeSelectionEvent(this.dtsm, tps, bb,
                            e.getOldLeadSelectionPath(), e.getNewLeadSelectionPath()));
                }
            }*/

car sinon il me renvoyais trois objets :

-le noeud selectionné (celui que je souhaite utiliser)
-le noeud parent
-le noeud racine

maintenant ça fonctionne tres tres bien et je suis content :) j'espere ne pas avoir besoin de re-demander des conseils:D

merci pour le lien qui m'aide beaucoup !

je te note 10/10

PS : est il possible d'utiliser cette source dans un programme qui sera distribué par mon entreprise ?

thank you

cheers !

Commentaire de Isammoc le 09/04/2008 11:33:54

Euh... Tu as touché à MON code ???

Le but c'est que tu face ton propre SelectionListener...
Qui serait ajouté à tous les SelectionListener...

Normalement, aucunement besoin de toucher à mon code, (peut etre pour enlever un System.out.println() mais c'est tout)
Le but du BUNCH ( = grappe) c'est justement de changer la sélection depuis la racine jusqu'à celui que tu as cliqué...
Mets le CheckBoxTreeSelectionModel dans le mode ALONE pour ne pas sélectionné tous les parents jusqu'à la racine mais uniquement celui que tu as cliqué...





Mais sinon, je ne sais pas.
Vu que le code source originel ne m'appartient pas, (c'est celui de sun et il n'était pas encore libre).
Si ce n'est que mon code, oui tu peux l'utiliser commercialement, je l'ai d'ailleurs mis ici pour qu'il soit utilisé par d'autres personnes (commercial ou non).


Pour ce qui est de mon propre code , c'est du code libre sous GPL 2 ou version supérieure.




Commentaire de MLD_Valus le 05/05/2008 14:50:54

j'ai encore un point de détail sur lequel je butte depuis quelques jours. je vais essayer de m'expliquer clairement. Le JTree est rempli au démarage du programme avec des données contenues dans un fichier xml. Jusque la tout est ok.

la structure des données est la suivante :

+ param A
--+test 1
--+test 2
--+test 3
--+test 4


+ param 1
--+test 1

+ param2
--+test 2

....

en gros j ai un noeud avec de multiples parametres a tester, et des noeuds contenant chacun un des parametres du noeud multi.

ce que j'aimerais réaliser c'est un test, l'utilisateur peut choisir de selectionner tous les parametres (le noeud multi) ou plusieurs simple parametres... car il existe des parametres simples pas présents dans le multi

j'ai réalisé les fonctions pour tester et elles marchent, j'arrive a afficher :

" Test globules rouges déja séléctionné ! "

le souci c'est qu'apres avoir affiché le message, la caze se coche quand même ...

comment faire ?

Commentaire de Isammoc le 05/05/2008 22:45:36

Euh, je ne vois pas trop ce que tu entends par là.

A mon humble avis, il faudrait que tu implémentes ton propre TreeSelectionModel pour que ca marche selon tes besoins.

Ce que je suppose :
C'est que tu a implémenter un TreeSelectionListener qui ne fait attention qu'au dernier noeud du TreePath selectionné. Alors que dans le TreeSelectionModel, c'est bien CE noeud là (avec toute ses parents dans cet ordre là) qui est sélectionné.

En gros, ce n'est pas parce que tu as le même objet au final, qu'il passe par le même chemin pour l'afficher et donc le sélectionner.

Je t'invite à implémenter ton propre TreeSelectionModel, ou au contraire, de vérifier le TreePath complet dans ton TreeSelectionListener

Commentaire de MLD_Valus le 06/05/2008 09:32:01

en fait j'ai gardé le code tel qu'il est dans le fichier ZIP. Je débute en java et j'ai vraiement du mal a faire celà, aurais tu un exemple de source dont je pourrais m'inspirer ?

cordialement


Valentin

Commentaire de Isammoc le 07/05/2008 00:37:53

Je ne sais pas quel est le cas que tu désires.

Si c'est quand tu cliques sur un objet, (test1 par exemple) tous les objets du même type soit sélectionné (param A / test 1 et param 1 / test 1), il faut que tu changes le TreeSelectionModel. Regarde dans le zip, tu dois en avoir un CheckBoxTreeSelectionModel.

Sinon, si tu veux juste éviter ton message, quand tu implémentes ton TreeSelectionListener (la méthode valueChanged), tu récupères un ou des TreePath, et tu dois faire attention à tous les objets du chemin, pas seulement au dernier qui est getLastPathComponent, mais à tout le chemin complet.

Tu as des tutoriaux divers et variés sur le net avec un JTree, cela fonctionne de la même manière.

Commentaire de MLD_Valus le 07/05/2008 11:41:31

est il possible de faire en sorte que lorsqu'un noeud ne contient qu une feuille et que la feuille est cochée, que le noeud soit coché également de maniere automatique ?

Commentaire de poumon le 11/08/2008 22:07:02

Bonjour
Je pense que je vais m'inspirer de ce code pour un futur projet.
Est ce que quelqu'un l'a testé avec JRE 6?

Commentaire de Isammoc le 12/08/2008 08:03:00

MLD-Valus>
Oui, tout ce système se passe dans le TreeSelectionModel. A toi de faire ta propre classe. Je suis interessé par une éventuelle classe ^^

Poumon>
Pas que je sache, donc si tu veux faire des retours, je suis preneur ^^
(Et sans problème pour l'utilisation)

Commentaire de poumon le 12/08/2008 15:47:34

Ton fonctionne bien. Par contre, je me suis servi de
if(!leaf){
       this.remove(jcb);
    }
    return this;
} pour ne pas mettre de checkbox sur les dossiers.
L'ennui, c'est que je ne peux pas faire de double click sur les dossiers car ils sont traités comme des checkboxs au niveau du MouseListener.
Aurais tu un conseil à me donner?

Commentaire de MLD_Valus le 12/08/2008 15:51:14

changes le listener pour remplacer le simple clic par un double clic ...

tu saurais me dire comment virer les icones après la checkbox (dossier pour le noeud et fichier pour la feuille ?) merci XD

Commentaire de poumon le 12/08/2008 16:37:34

Je viens de tester pour les icones.
J'arrive à les remplacer mais pas à les faire disparaitre. J'ai toujours les icônes par défaut de JTree.
Au pire, tu peux creer des png vides transparentes(pas testé). Si je trouve une meilleure info, je te fais signe!

Commentaire de poumon le 13/08/2008 08:48:00

Est ce que vous pensez qu'on peut créer un jtree mixte avec certains nodes en checkbox et d'autres en node "normal"?

Commentaire de Isammoc le 13/08/2008 10:21:54

Poumon>
Oui, mais là, ca sort de mon exemple.
En fait, il va te falloir gérer ton propre TreeCellRenderer pour choisir les noeuds que tu vas mettre avec un checkbox ou non (facon apparente). Et un MouseListener qui vérifie quel noeud a été cliqué avec une action différente si c'est un noeud "normal" ou un noeud "checkbox".
Après, il y a aussi ce que tu veux comme retour...

Commentaire de poumon le 13/08/2008 15:49:36

Merci isammoc. J'ai suivi tes conseils et c'est tout bon. Si tu veux, je te ferais parvenir mes scripts (mais là c'est encore un peu fouilli...)
Il me reste juste à trouver comment executer un javascript quand on coche une case.
Je pense que ton script aura et va aider beaucoup de gens!Merci encore

Commentaire de MLD_Valus le 13/08/2008 15:52:24

ça c'est sur que ça va aider, la preuve ça m'aide déja :p

j'ai tout implementé le modele et la méthode toggleSelectionPath pour inclure mes contraintes de sélection/déselection, ainsi que la possibilité de cocher tout les fils en cochant un noeud parent

Commentaire de Isammoc le 13/08/2008 21:05:08

Poumon & MLD_Valus> Merci, ca fait plaisir de savoir que ca sert ^^
Même après pratiquement 4 ans, on en parle encore ^^

MLD_Valus> Pour cocher tous les fils, il me semble que j'ai mis cette option dans mon SelectionModel. Une option Bunch (grappe), il me semble (j'ai la flemme d'aller chercher), non ?

Commentaire de qfdreg le 31/03/2009 12:29:08 10/10

Bravo pour ce code qui "risque" d' m'être utile!! ;-)

2 petits détails cependant (valable sur mon PC/ma version de Java etc...)  :

- Les variables notées enum de type Enumeration ne passent pas (logique!). Je les ai renommées en enum1.
- Lorsque l'arbre est entièrement sélectionné (avec le clic droit sur JCheckBoxTree) et que l'on déséléctionne (tjs avec le clic droit) les noeuds colors, sports et food, La CheckBox de JCheckBoxTreereste "sélectionnée mais grisée". Alors que ma logique voudrait que n'ayant plus rien de sélectionné JCheckBoxTree se déséléctionne.
La remarque est valable pour tout sous-arbre (comme food par exemple).

En tout cas bravo!

Commentaire de Isammoc le 31/03/2009 16:36:33

Merci pour ce retour plus qu'enthousiaste.

Effectivement, depuis la version 5 de java, enum est un mot réservé et est utilisé pour déclarer les énumérations.

Effectivement également, il faudrait revoir le DefaultCheckboxTreeSelectionModel.
J'avais fait ça il y a un bout de temps, et pas encore eu le courage de le reprendre avec les dernières fonctionnalités de Java.

Depuis, j'ai appris pas mal de choses, donc je le reprendrai surement pour en faire quelque chose d'encore plus joli et pratique.

Commentaire de naaserge le 15/09/2009 09:46:25

Salut, le code proposer ici est tres interessant et je suis entrain de l'utiliser sur un projet, mais chose curieuse lorsque je rend le root invisible les noeuds ne s expendent plus, si quelqu'un pouvais m'aider dans la correction

Commentaire de xxLoloxx le 19/09/2011 15:53:04 10/10

Bonjour,

Tout d'abord, un grand merci pour le code produit. Il m'a permis un grand mal de tête en moins.
Cependant la méthode valueChanged(TreeSelectionEvent e) permet de récupérer le changement lorsque l'on clique sur un node. Or je souhaiterais pousser ceci afin d'exécuter une action spécifique si le node est sélectionné (toujours après un clic) et une autre si il est déselectionné.
Je ne vois vraiment pas comment procéder (méthode à modifier, etc).

Je met quand même la note de 10 car le projet est vraiment utile.
Merci


Commentaire de Isammoc le 20/09/2011 09:34:36

Bonjour,

Dans ce genre de cas, il ne faut pas modifier le composant, mais ajouter un écouteur au modèle de sélection, qui selon l'évènement précis, appelerait une action ou une autre.

De souvenir : tree.getSelectionModel().addSelectionListener(monListener)
ou quelque chose d'approchant.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,856 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales