Bonjour à tous,

(C'est la première fois que je post j'espère que je ne fais rien de mal ^^)

Voila, j'ai un petit problème avec une JComboBox. Lorsque je lance mon application, ma JComboBox se remplit avec des informations que je récupère dans un fichier .xml . Jusque là aucun problème, tout s'affiche très bien.

Ensuite je propose à l'utilisateur de modifier la valeur qu'il aura choisit dans la JcomboBox (via des JTextArea) et il doit cliquer sur un bouton "modifier" pour valider. Là encore tout se passe bien, mon fichier .xml est bien modifié.

Je relance alors a nouveau la fonction qui me permet de remplir ma JComboBox et je fais une validate() et un repaint() de ma fenêtre. Mais lorsque j'ouvre ma JComboBox elle contient toujours les informations de la précédente recherche (celles avant les modifications). Je suis obligé de relancer ma page (via ma MenuBar) afin que les nouvelles informations apparaissent et ce n'est vraiment pas ergonomique.


J'espère avoir été clair, voici des fragments de mon code.

Voici le code du Jpanel qui contient ma JComboBox :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
public class FenetreConfiguration extends JPanel{
    FenetrePrincipale fen;//C'est ma JFrame
    ....
    JComboBox concordanceList;//La JComboBox qui me pose problème
    JButton concordanceModif = new JButton("Modifier");
    ....
    ConfigurationListener listener;//Le listener qui s'occupe de ma fenêtre
    ....
 
    public FenetreConfiguration(FenetrePrincipale fen){
 
             this.fen = fen;
 
	listener = new ConfigurationListener(this);
 
	concordanceModif.setActionCommand("concordanceModif");
	concordanceModif.addActionListener(listener);
 
	remplirConcordance();		
 
             placerConcordance();//place ma JComboBox dans ma Jframe
 
    }
 
    protected void remplirConcordance(){
	try{
		document = sxb.build(new File("..."));
		racine = document.getRootElement();
 
		List listELement = racine.getChild("CONCORDANCE").getChildren("ETAT");
		Iterator it = listELement.iterator();
		ArrayList concordanceTab = new ArrayList();
		concordanceTab.add("Nouveau");
		while(it.hasNext()){
			Element courant = (Element)it.next();
			concordanceTab.add(courant.getChildText("SOURCE")) //Je récupère le valeur que je veux afficher dans ma JComboBox
		}
		concordanceList = new JComboBox(concordanceTab.toArray());
 
		concordanceList.setActionCommand("concordanceList");
		concordanceList.addActionListener(listener);
	}catch(Exception e){...}
    }
}
Et maintenant, le code de mon listener :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
public class ConfigurationListener implements ActionListener {
    FenetreConfiguration fenConf;
    ....
 
    public ConfigurationListener(FenetreConfiguration fenConf){
	this.fenConf = fenConf;
    }
 
    if(e.getActionCommand().equals("concordanceModif")){
	try{
		document = sxb.build(new File("..."));
		racine = document.getRootElement();
 
		List ListElement = racine.getChild("CONCORDANCE").getChildren("ETAT");
 
                          //Je récupère l'élément selectionné
		int ind = fenConf.concordanceList.getSelectedIndex();
		Element modif = (Element)ListElement.get(ind-1);
 
                          //Je modifie les éléments dont j'ai besoin		
		Element src = modif.getChild("SOURCE");
		Element dst = modif.getChild("DESTINATION");		
		src.setText(fenConf.nomEtatSRC.getText());
		dst.setText(fenConf.nomEtatDST.getText());
 
	}catch(Exception ex){...}
	try {
		enregistreFichier("..."); //J'enregistre mon fichier .xml modifié
	} catch (Exception e1) {}
 
             //Jusque là tout fonctionne correctement
 
 
             //-------------->C'EST ICI QUE CA MARCHE PAS<------------//
	fenConf.remplirConcordance();
	fenConf.fen.validate();
	fenConf.fen.repaint();
    }
}

Voila, si vous avez une idée n'hésitez pas. (ou tout autres commentaires sur mon code qui me permettrait de m'améliorer ^^)

Si vous voulez d'autres informations morceaux de codes...etc demandez moi.

Merci d'avance à tout le monde.