[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 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 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
Rejoignez-nous