Bonjour,

J ai une JComboBox, qui correspond aux choix de racines de mon arbre (JTree), modifiable dans 2 cas. Quand l utilisateur choisit un des items, j aimerais recuperer l evenement pour changer la racine de mon arbre.

De plus, quand la racine change effectivement, j aimerais pouvoir changer la liste de racines proposees.

J ai donc procede de la maniere suivante:
J ajoute cet actionListener a la JComboBox

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
public void actionPerformed(ActionEvent event)
   {
       setCurrentNode((MyTreeNode)directoryBoxModel.getSelectedItem());
   }
avec la methode suivante

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
private void setCurrentNode(MyTreeNode current)
   {
      if(current == null)
      {
         return;
      }
      ((MyTreeModel)(tree.getModel()).setRoot(current);
      directoryBoxModel.contentsChanged();
 
   }
la methode contentsChanged calcule son nouveau contenu en fonction de la nouvelle racine, et fait un fireContentsChanged(this, -1, -1); et un setSelectedItem(node).

Le probleme est le suivant: cette methode modifie la combo, et donc appelle l actionPerformed. Donc je tourne en rond, et rien ne marche. Comment faire?