Bonjour !
J'ai voulu utiliser une simple JCombobox, mais lorsque j'ajoute mes items dedans à l'aide de la méthode addItem(Object obj) , une NullPointerException est levée !
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 JComboBox choixTaille; public IconesDessins(...){ ... choixTaille = new JComboBox(); choixTaille.setActionCommand("Taille"); choixTaille.addActionListener(e); choixTaille.addItem("Taille"); choixTaille.addItem("Grand"); choixTaille.addItem("Moyen"); choixTaille.addItem("Petit"); public JComboBox getChoixTaille() { return choixTaille; } }
En fouillant un peu je me suis rendu compte que le problème venait de lorsque j'invoquais la méthode getChoixTaille() à partir de mon contrôleur (mon projet est en MVC) :
L'exception est levée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 else if(e.getActionCommand().equals("Taille")){ if(fenetre.getIcones().getChoixTaille().getSelectedItem().equals("Grand")){ taille = 50; } else if(fenetre.getIcones().getChoixTaille().getSelectedItem().equals("Moyen")){ taille = 25; } else if(fenetre.getIcones().getChoixTaille().getSelectedItem().equals("Grand")){ taille = 10; } }
La ligne 76 de IconesDessin correspond au premier ajout d'item, c'est à dire : choixTaille.addItem("Taille");
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Exception in thread "main" java.lang.NullPointerException at controleur.Ecouteurs.actionPerformed(Ecouteurs.java:138) at javax.swing.JComboBox.fireActionEvent(Unknown Source) at javax.swing.JComboBox.contentsChanged(Unknown Source) at javax.swing.AbstractListModel.fireContentsChanged(Unknown Source) at javax.swing.DefaultComboBoxModel.setSelectedItem(Unknown Source) at javax.swing.DefaultComboBoxModel.addElement(Unknown Source) at javax.swing.JComboBox.addItem(Unknown Source) at vue.IconesDessin.<init>(IconesDessin.java:76) at vue.Fenetre.<init>(Fenetre.java:45) at main.Main.main(Main.java:29)
La ligne 138 de Ecouteurs (mon contrôleur), correspond à :
if(fenetre.getIcones().getChoixTaille().getSelectedItem().equals("Grand"))
Je vérifie en n'invoquant que fenetre.getIcones().getChoixTaille(), et effectivement c'est bien de là que vient de le problème. Paradoxalement, lorsque j'invoque la même méthode (getChoixTaille()) dans les autres classes, telle que IconesDessins elle même , ou bien Fenetre, qui contient l'objet de la classe IconesDessins, ça marche parfaitement. Du coup je sais pas trop comment régler ce souci ! Voila j'espère avoir été précise, j'ai fait le mieux que j'ai pu pour rassembler les informations nécessaires, et vous remercie d'avance de vos réponses !
====> EDIT : en utilisant le mode debug (que je viens de découvrir), je vois que, au moment de l'initialisation de IconesDessin dans ma Jframe, l'objet reste null !
Pourtant je l'initialise comme tout autre objet :
Ce n'est pas le seul objet à réagir comme ça, même mon JPanel reste null après initialisation, mais ce sont les deux seuls objets à faire ça . Un peu d'aide ne serait pas de refus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 icones = new IconesDessin(ecouteur, debug); this.add(icones, "wrap, w 26.5%!, h 30%!");
Partager