Salut à tous,

Voilà j'ai codé un calendrier qui marche et maintenant je suis en train de l'améliorer afin de pouvoir changer la locale du calendrier et ainsi le mettre à jour dynamiquement. Le changement est effectif pour les jours de la semaine et du mois mais pas pour le JComboBox des mois. Soit je récupère l'exception : Exception in thread "main" java.lang.NullPointerException at Calendar.actionPerformed(Calendar.java:95) ou soit j'ai les mois dans les 2langues que j'utilise qui s'affichent dans le JComboBox. Je sais où est le problème mais je n'arrive pas à le corrgier. Voilà mon code :

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
public class Calendar {
    ...
    static JComboBox monthsCombo;
    static String[] months;
    static Month[] onlyMonths;
    ...
 
    public Calendar(JPanel westMainWindowPanel, Locale locale){ 
 	...
	monthsCombo = new JComboBox();
        updateMonth();
  	...	
	monthsCombo.addActionListener(new ActionListener(){
             public void actionPerformed(ActionEvent e){
		System.out.println(monthsCombo.getSelectedItem()); // Affichage de null			
                System.out.println(((Month)monthsCombo.getSelectedItem()).getMonthIndex()); // J'ai l'exception qui se fini ici
	            ...
	     }
            }); 
    }
 
    // MAJ du calendrier
    protected static void updateCalendarLocale(Locale locale){ 
            ...	
            updateMonth();
	    // Les autres MAJ
            ...
    }
 
    // MAJ du combo box des mois
    private static void updateMonth(){ 
        // Je récupère les mois en fonction de la locale
    	months = dateSymbols.getMonths();
    	onlyMonths = new Month[Calendar.UNDECIMBER];
    	String month = "";
 
        // Ce for permet d'enlever le 13ième mois vide retourné par la méthode getMonths() et d'avoir des couples (numéro du mois, nom du mois)
 	for (int i = Calendar.JANUARY; i < Calendar.UNDECIMBER; i++){
 	         month = months[i].substring(0,1).toUpperCase()+months[i].substring(1);
 	         onlyMonths[i] = new Month(i, month);
 	}
 
        // Je test si le combo a déjà été affiché
        // Si c'est le cas je le met à jour, du moins j'essaye parce que c'est ici que ça bloque
	if (monthsCombo.getItemCount() == 12) {
                 // J'ai l'exception qui commence ici
 	         monthsCombo.removeAllItems();			
 
                 // Je rempli le JcomboBox avec les nouvelles valeurs
 	         for (int i = Calendar.JANUARY; i < Calendar.UNDECIMBER; i++){
                          monthsCombo.addItem(onlyMonths[i]);
                          System.out.println(monthsCombo.getItemAt(i));
 	         }
	}
        // Sinon je le crée
	else {
		monthsCombo = new JComboBox(onlyMonths);
	}
 
	monthsCombo.setSelectedIndex(selectedMonth);
    }
}
Sinon, je ne sais pas si je devrais utiliser un ComboBoxModel. Comment ça marche et quel serait son utilité dans mon cas ?

Merci d'avance pour vos réponses