Pb de mise à jour d'un JComboBox
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:
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