[JTree] probleme avec addTreeSelectionListener

Résolu
cs_cbil
Messages postés
140
Date d'inscription
mercredi 30 avril 2003
Statut
Membre
Dernière intervention
15 mai 2008
- 2 juin 2006 à 18:19
cs_cbil
Messages postés
140
Date d'inscription
mercredi 30 avril 2003
Statut
Membre
Dernière intervention
15 mai 2008
- 5 juin 2006 à 14:48
Salut tout le monde !

J'ai un soucis avec mon JTree, le addTreeSelectionListener ne fonctionne pas

voici ce que j'ai dans ma classe :

public class PanelPrecisionTree extends JPanel implements TreeSelectionListener
{
......

private JTree getArbreDTD() {
  if (arbreDTD == null) {
   arbreDTD = new JTree();
   DefaultTreeSelectionModel modelSelection = new DefaultTreeSelectionModel();
   modelSelection.setSelectionMode(DefaultTreeSelectionModel.SINGLE_TREE_SELECTION);
   arbreDTD.setSelectionModel(modelSelection);
   arbreDTD.addTreeSelectionListener(this);
  }else{
   
   gestionDTDOrganisation = new GestionInterfaceXML(nomProjet,nomFichierXML,lienDTD);
   arbreDTD.removeAll();
   arbreDTD = gestionDTDOrganisation.getArbre();
  }
  return arbreDTD;
 }

........

public void valueChanged(TreeSelectionEvent e)
 {

      System.out.println("--------> Selection Tree : "+selection.getNom()+" <----------");

}

}


Le JTree est bien affiché mais j'ai beau selectionné n'importe quel noeud, element, le system.out.println n'est pas affiché. En passant, le model de selection ne fonctionne pas non plus, malgre le SINGLE_TREE_SELECTION, je peux toujours selectionne plusieurs noeud.

Merci a+, ca doit etre tout bete, mais j'ai pas trouvé, je trouverais j'espere lundi ^^

Cbil














 

2 réponses

Twinuts
Messages postés
5372
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
24 mai 2022
111
2 juin 2006 à 19:48
Salut,

dans ton code tu fais
DefaultTreeSelectionModel modelSelection = new DefaultTreeSelectionModel();
modelSelection.setSelectionMode(DefaultTreeSelectionModel.SINGLE_TREE_SELECTION);

pourquoi ne pas faire simplement
arbreDTD.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);

pourquoi aussi ne pas modifier que le model genre
private DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode();
....
DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);
treeModel.addTreeModelListener(new TreeModelEvent(this));//pas obligatoire
arbreDTD = new JTree(treeModel);

ensuite tu fais
 if (arbreDTD == null) {
...
}else{

   gestionDTDOrganisation = new GestionInterfaceXML(nomProjet,nomFichierXML,lienDTD);

   arbreDTD.removeAll();

   arbreDTD = gestionDTDOrganisation.getArbre();
}

gestionDTDOrganisation.getArbre(); te renvoit la meme config en terme de selection et d'ajout de listener que dans le cas de arbreDTD == null ?

WORA
3
cs_cbil
Messages postés
140
Date d'inscription
mercredi 30 avril 2003
Statut
Membre
Dernière intervention
15 mai 2008
1
5 juin 2006 à 14:48
Merci pour la réponse.

En fait, c'est la première fois que j'utilisais les arbres et je n'y comprenais rien. En effet pour la selection unique, ta ligne de code est plus simple ^^, merci.

Concernant le reste, j'ai résolu le probleme, en fait, je ne touchais qu'a la racine de l'arbre (car je pensais que ca serais pour ton ces fils également) mais il fallait mettre le code dans la boucle ou je créé chacun de mes noeuds.

Merci beaucoup, a+.
Cbil
3