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
avec la methode suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public void actionPerformed(ActionEvent event) { setCurrentNode((MyTreeNode)directoryBoxModel.getSelectedItem()); }
la methode contentsChanged calcule son nouveau contenu en fonction de la nouvelle racine, et fait un fireContentsChanged(this, -1, -1); et un setSelectedItem(node).
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(); }
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?
Partager