[Newbie] Pb NullPointerException avec un JComboBox
4 réponses
rom15becs
Salut a tous, j'ai fais un programme avec un JComboBox. Le seul probleme c'est
qu'au moment de lancer la fonction getItemCount, le programme me retourne une
NullPointerException. je suppose que le probleme viens au niveau de
l'actionListener voici un aperçut de mon programme:
*******
public class PassgenComposants extends JPanel implements ActionListener{
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas Delsaux
Le 17.10 2003, (Rom15becs) s'est levé(e) et s'est dit "tiens, je vais écrire aux mecs de fr.comp.lang.java"
Salut a tous, j'ai fais un programme avec un JComboBox. Le seul probleme c'est qu'au moment de lancer la fonction getItemCount, le programme me retourne une NullPointerException. je suppose que le probleme viens au niveau de l'actionListener voici un aperçut de mon programme:
Pas du tout ! Un NullPointerException signifie que l'objet sur lequel tu travailles vaut null, ce qui interdit l'appel de méthode dessus. La question est de savoir pourquoi il est null. Et la réponse est assez simple : masquage de variable ! Je n'ai laissé que les lignes significatives.
******* public class PassgenComposants extends JPanel implements ActionListener{
private JComboBox choix;
public PassgenComposants(){
JComboBox choix=new JComboBox(); } public void actionPerformed (ActionEvent e){ if(e.getSource()==lancer){
int selec=choix.getItemCount(); } } } }
Le problème vient du fait que, dans ton constructeur, tu crées une variable *locale* à la méthode qui s'appelle choix (tout comme ta variable d'instance) et qui est initialisée. Ta variable d'instance choix est, elle, masquée par cette variable locale. Elle n'est donc pas initialisée, et vaut logiquement null lors de l'appel à la méthode actionPerformed. La correction à faire est très simple : dans ton constructeur, remplace la ligne JComboBox choix=new JComboBox(); par choix=new JComboBox();
Voila, merci de m'indiquer la solution passke la franchement, je vois pas du tout... Merci Rom15Becs
-- Nicolas Delsaux N > Sur Internet, personne ne sait que vous êtes ... un singe in fras, to be or not to be
Le 17.10 2003, rom15becs@aol.com (Rom15becs) s'est levé(e) et s'est dit
"tiens, je vais écrire aux mecs de fr.comp.lang.java"
Salut a tous, j'ai fais un programme avec un JComboBox. Le seul
probleme c'est qu'au moment de lancer la fonction getItemCount, le
programme me retourne une NullPointerException. je suppose que le
probleme viens au niveau de l'actionListener voici un aperçut de mon
programme:
Pas du tout !
Un NullPointerException signifie que l'objet sur lequel tu travailles
vaut null, ce qui interdit l'appel de méthode dessus. La question est de
savoir pourquoi il est null. Et la réponse est assez simple : masquage de
variable !
Je n'ai laissé que les lignes significatives.
*******
public class PassgenComposants extends JPanel implements
ActionListener{
private JComboBox choix;
public PassgenComposants(){
JComboBox choix=new JComboBox();
}
public void actionPerformed (ActionEvent e){
if(e.getSource()==lancer){
int selec=choix.getItemCount();
}
}
}
}
Le problème vient du fait que, dans ton constructeur, tu crées une
variable *locale* à la méthode qui s'appelle choix (tout comme ta
variable d'instance) et qui est initialisée.
Ta variable d'instance choix est, elle, masquée par cette variable
locale. Elle n'est donc pas initialisée, et vaut logiquement null lors de
l'appel à la méthode actionPerformed.
La correction à faire est très simple : dans ton constructeur, remplace
la ligne
JComboBox choix=new JComboBox();
par
choix=new JComboBox();
Voila, merci de m'indiquer la solution passke la franchement, je vois
pas du tout...
Merci
Rom15Becs
--
Nicolas Delsaux
N > Sur Internet, personne ne sait que vous êtes ... un singe
in fras, to be or not to be
Le 17.10 2003, (Rom15becs) s'est levé(e) et s'est dit "tiens, je vais écrire aux mecs de fr.comp.lang.java"
Salut a tous, j'ai fais un programme avec un JComboBox. Le seul probleme c'est qu'au moment de lancer la fonction getItemCount, le programme me retourne une NullPointerException. je suppose que le probleme viens au niveau de l'actionListener voici un aperçut de mon programme:
Pas du tout ! Un NullPointerException signifie que l'objet sur lequel tu travailles vaut null, ce qui interdit l'appel de méthode dessus. La question est de savoir pourquoi il est null. Et la réponse est assez simple : masquage de variable ! Je n'ai laissé que les lignes significatives.
******* public class PassgenComposants extends JPanel implements ActionListener{
private JComboBox choix;
public PassgenComposants(){
JComboBox choix=new JComboBox(); } public void actionPerformed (ActionEvent e){ if(e.getSource()==lancer){
int selec=choix.getItemCount(); } } } }
Le problème vient du fait que, dans ton constructeur, tu crées une variable *locale* à la méthode qui s'appelle choix (tout comme ta variable d'instance) et qui est initialisée. Ta variable d'instance choix est, elle, masquée par cette variable locale. Elle n'est donc pas initialisée, et vaut logiquement null lors de l'appel à la méthode actionPerformed. La correction à faire est très simple : dans ton constructeur, remplace la ligne JComboBox choix=new JComboBox(); par choix=new JComboBox();
Voila, merci de m'indiquer la solution passke la franchement, je vois pas du tout... Merci Rom15Becs
-- Nicolas Delsaux N > Sur Internet, personne ne sait que vous êtes ... un singe in fras, to be or not to be
jerome moliere
Nicolas Delsaux wrote:
Le 17.10 2003, (Rom15becs) s'est levé(e) et s'est dit "tiens, je vais écrire aux mecs de fr.comp.lang.java"
Salut a tous, j'ai fais un programme avec un JComboBox. Le seul probleme c'est qu'au moment de lancer la fonction getItemCount, le programme me retourne une NullPointerException. je suppose que le probleme viens au niveau de l'actionListener voici un aperçut de mon programme:
Pas du tout ! Un NullPointerException signifie que l'objet sur lequel tu travailles vaut null, ce qui interdit l'appel de méthode dessus. La question est de savoir pourquoi il est null. Et la réponse est assez simple : masquage de variable ! Je n'ai laissé que les lignes significatives.
******* public class PassgenComposants extends JPanel implements ActionListener{
private JComboBox choix;
public PassgenComposants(){
JComboBox choix=new JComboBox(); } public void actionPerformed (ActionEvent e){ if(e.getSource()==lancer){
int selec=choix.getItemCount(); } } } }
Le problème vient du fait que, dans ton constructeur, tu crées une variable *locale* à la méthode qui s'appelle choix (tout comme ta variable d'instance) et qui est initialisée. Ta variable d'instance choix est, elle, masquée par cette variable locale. Elle n'est donc pas initialisée, et vaut logiquement null lors de l'appel à la méthode actionPerformed. La correction à faire est très simple : dans ton constructeur, remplace la ligne JComboBox choix=new JComboBox(); par choix=new JComboBox();
la vraie solution cher monsieur delsaux serait d'utiliser une convention de nommage evitan tainsi à la base ce type de shadowing tres pervers :)
Jerome
Nicolas Delsaux wrote:
Le 17.10 2003, rom15becs@aol.com (Rom15becs) s'est levé(e) et s'est dit
"tiens, je vais écrire aux mecs de fr.comp.lang.java"
Salut a tous, j'ai fais un programme avec un JComboBox. Le seul
probleme c'est qu'au moment de lancer la fonction getItemCount, le
programme me retourne une NullPointerException. je suppose que le
probleme viens au niveau de l'actionListener voici un aperçut de mon
programme:
Pas du tout !
Un NullPointerException signifie que l'objet sur lequel tu travailles
vaut null, ce qui interdit l'appel de méthode dessus. La question est de
savoir pourquoi il est null. Et la réponse est assez simple : masquage de
variable !
Je n'ai laissé que les lignes significatives.
*******
public class PassgenComposants extends JPanel implements
ActionListener{
private JComboBox choix;
public PassgenComposants(){
JComboBox choix=new JComboBox();
}
public void actionPerformed (ActionEvent e){
if(e.getSource()==lancer){
int selec=choix.getItemCount();
}
}
}
}
Le problème vient du fait que, dans ton constructeur, tu crées une
variable *locale* à la méthode qui s'appelle choix (tout comme ta
variable d'instance) et qui est initialisée.
Ta variable d'instance choix est, elle, masquée par cette variable
locale. Elle n'est donc pas initialisée, et vaut logiquement null lors de
l'appel à la méthode actionPerformed.
La correction à faire est très simple : dans ton constructeur, remplace
la ligne
JComboBox choix=new JComboBox();
par
choix=new JComboBox();
la vraie solution cher monsieur delsaux serait d'utiliser une convention
de nommage evitan tainsi à la base ce type de shadowing tres pervers :)
Le 17.10 2003, (Rom15becs) s'est levé(e) et s'est dit "tiens, je vais écrire aux mecs de fr.comp.lang.java"
Salut a tous, j'ai fais un programme avec un JComboBox. Le seul probleme c'est qu'au moment de lancer la fonction getItemCount, le programme me retourne une NullPointerException. je suppose que le probleme viens au niveau de l'actionListener voici un aperçut de mon programme:
Pas du tout ! Un NullPointerException signifie que l'objet sur lequel tu travailles vaut null, ce qui interdit l'appel de méthode dessus. La question est de savoir pourquoi il est null. Et la réponse est assez simple : masquage de variable ! Je n'ai laissé que les lignes significatives.
******* public class PassgenComposants extends JPanel implements ActionListener{
private JComboBox choix;
public PassgenComposants(){
JComboBox choix=new JComboBox(); } public void actionPerformed (ActionEvent e){ if(e.getSource()==lancer){
int selec=choix.getItemCount(); } } } }
Le problème vient du fait que, dans ton constructeur, tu crées une variable *locale* à la méthode qui s'appelle choix (tout comme ta variable d'instance) et qui est initialisée. Ta variable d'instance choix est, elle, masquée par cette variable locale. Elle n'est donc pas initialisée, et vaut logiquement null lors de l'appel à la méthode actionPerformed. La correction à faire est très simple : dans ton constructeur, remplace la ligne JComboBox choix=new JComboBox(); par choix=new JComboBox();
la vraie solution cher monsieur delsaux serait d'utiliser une convention de nommage evitan tainsi à la base ce type de shadowing tres pervers :)
Jerome
Laurent Bossavit
la vraie solution cher monsieur delsaux serait d'utiliser une convention de nommage evitan tainsi à la base ce type de shadowing tres pervers :)
La vraie solution serait d'écrire des tests unitaires avant d'écrire le code. Les conventions de nommage ne seraient qu'une béquille; le code fourni par le premier contributeur souffre de plusieurs autres défauts, comme le "selection = combo.getItemCount()".
la vraie solution cher monsieur delsaux serait d'utiliser une convention
de nommage evitan tainsi à la base ce type de shadowing tres pervers :)
La vraie solution serait d'écrire des tests unitaires avant d'écrire le
code. Les conventions de nommage ne seraient qu'une béquille; le code
fourni par le premier contributeur souffre de plusieurs autres défauts,
comme le "selection = combo.getItemCount()".
la vraie solution cher monsieur delsaux serait d'utiliser une convention de nommage evitan tainsi à la base ce type de shadowing tres pervers :)
La vraie solution serait d'écrire des tests unitaires avant d'écrire le code. Les conventions de nommage ne seraient qu'une béquille; le code fourni par le premier contributeur souffre de plusieurs autres défauts, comme le "selection = combo.getItemCount()".
la vraie solution cher monsieur delsaux serait d'utiliser une convention de nommage evitan tainsi à la base ce type de shadowing tres pervers :)
La vraie solution serait d'écrire des tests unitaires avant d'écrire le code. Les conventions de nommage ne seraient qu'une béquille; le code fourni par le premier contributeur souffre de plusieurs autres défauts, comme le "selection = combo.getItemCount()".
ceci c'est du curatif pas du preventif, utile certes.... cela n'empeche pas de bugs, cela permet de ne pas laisser partir un bug en prod....
Jerome
Laurent Bossavit wrote:
la vraie solution cher monsieur delsaux serait d'utiliser une convention
de nommage evitan tainsi à la base ce type de shadowing tres pervers :)
La vraie solution serait d'écrire des tests unitaires avant d'écrire le
code. Les conventions de nommage ne seraient qu'une béquille; le code
fourni par le premier contributeur souffre de plusieurs autres défauts,
comme le "selection = combo.getItemCount()".
ceci c'est du curatif pas du preventif, utile certes....
cela n'empeche pas de bugs, cela permet de ne pas laisser partir un bug
en prod....
la vraie solution cher monsieur delsaux serait d'utiliser une convention de nommage evitan tainsi à la base ce type de shadowing tres pervers :)
La vraie solution serait d'écrire des tests unitaires avant d'écrire le code. Les conventions de nommage ne seraient qu'une béquille; le code fourni par le premier contributeur souffre de plusieurs autres défauts, comme le "selection = combo.getItemCount()".
ceci c'est du curatif pas du preventif, utile certes.... cela n'empeche pas de bugs, cela permet de ne pas laisser partir un bug en prod....