java.lang.NullPointerException [ résolu ]

java.lang.NullPointerException [ résolu ] - Java - Programmation

Marsh Posté le 04-05-2005 à 16:29:04    

Bonjour,
 
je code une fenêtre qui permet de changer le look and feel à partir d'une interface en bouton radio. Jusqu'ici rien de bien complexe. Voici mon code:

Code :
  1. laf=UIManager.getInstalledLookAndFeels();
  2.  System.out.println ( "on a :" + laf.length ) ;
  3.  ButtonGroup groupe = new ButtonGroup () ;
  4.  JRadioButton tableauBouton [] = new JRadioButton[ laf.length ] ;
  5.  for ( int lafNo = 0 ; lafNo < laf.length ; lafNo++ ) {
  6.   System.out.println ( "lafNo :" + lafNo ) ;
  7.   if ( lafNo == 0 ) {
  8.    tableauBouton[ lafNo ] = new JRadioButton ( UIManager.getLookAndFeel().getName() , true ) ;
  9.   }
  10.   else {
  11.    tableauBouton[ lafNo ] = new JRadioButton ( UIManager.getLookAndFeel().getName() ) ;
  12.   }
  13.   groupe.add ( tableauBouton[ lafNo ]  ) ;
  14.   contenu. add( tableauBouton[ lafNo ] ) ;
  15.   tableauBouton[ lafNo ].addActionListener ( this ) ;


 
Ca compile bien, mon interface correspond à ce que je veux. Pour faire ça dynamiquement j'utilise un tableau de boutons.
 
Mais lorsque je veux attraper l'évènement qui correspond aux changements des boutons radio j'ai un nullpointerexception sur la ligne du if:

Code :
  1. public void actionPerformed ( ActionEvent ev ) {
  2.  for ( int lafNo = 0 ; lafNo < laf.length ; lafNo++ ) {
  3.   System.out.println ("valeur de laf :" + laf.length + " valeur de lafNo :" + lafNo ) ;
  4.   if ( ev.getSource () == tableauBouton[ lafNo ] ) {
  5.    try {
  6.     UIManager.setLookAndFeel ( laf [ lafNo ] .getClassName () );
  7.     SwingUtilities.updateComponentTreeUI ( fenP );
  8.     System.out.println ( "on est passe au bon endroit" ) ;
  9.    } catch ( Exception ex ) {
  10.     System.out.println ( "problem avec lookandfeel" ) ;
  11.    }
  12.   }
  13.  }
  14. }


 
Ca doit être simple et je dois avoir des oeillères mais je vois pas d'où ça vient. Si vous avez une idée elle est la bienvenue.
@++


Message édité par chaica le 04-05-2005 à 17:29:11

---------------
Du taf dans le Logiciel Libre : https://www.linuxjobs.fr
Reply

Marsh Posté le 04-05-2005 à 16:29:04   

Reply

Marsh Posté le 04-05-2005 à 16:30:11    

Ya pas lgtps, ya eu un topic où justement je sais plus qui expliquait la NPE...

Reply

Marsh Posté le 04-05-2005 à 16:31:53    

Il est initialisé comment tableauBouton ? D'après ce que je comprends de ton code, il se pourrait bien qu'il soit null.


---------------
Le site de ma maman
Reply

Marsh Posté le 04-05-2005 à 16:33:00    

cesarr89 a écrit :

je sais plus qui


 
Un type insignifiant, t'occupe.


---------------
Le site de ma maman
Reply

Marsh Posté le 04-05-2005 à 16:33:30    

oops, c'etait toi? Milles excuses

Reply

Marsh Posté le 04-05-2005 à 16:34:32    

[:rofl]


---------------
IVG en france
Reply

Marsh Posté le 04-05-2005 à 16:36:56    

Je suis vraiment dsl Cherrytree

Reply

Marsh Posté le 04-05-2005 à 16:38:51    

cesarr89 a écrit :

Je suis vraiment dsl Cherrytree


C'était pas moi, c'était le vrai moins moins : la mèche derrière le belge.


---------------
Le site de ma maman
Reply

Marsh Posté le 04-05-2005 à 16:39:30    

tableauBouton est initialisé au début de ma classe comme suit:

Code :
  1. public JRadioButton tableauBouton [ ] ;


 
 
ensuite dans le morceau de code que j'ai donné:

Code :
  1. JRadioButton tableauBouton [] = new JRadioButton[ laf.length ] ;


 
 
et les boutons sont crées par:

Code :
  1. tableauBouton[ lafNo ] = new JRadioButton ( UIManager.getLookAndFeel().getName() ) ;



Message édité par chaica le 04-05-2005 à 16:44:49

---------------
Du taf dans le Logiciel Libre : https://www.linuxjobs.fr
Reply

Marsh Posté le 04-05-2005 à 16:40:27    

Citation :

C'était pas moi, c'était le vrai moins moins : la mèche derrière le belge


 
Dsl pour lui alors.

Reply

Marsh Posté le 04-05-2005 à 16:40:27   

Reply

Marsh Posté le 04-05-2005 à 16:53:43    

Topic passage obligé pour les débutants
 
Vrai mwin mwin et consorts.
[:moundir]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 04-05-2005 à 16:54:15    

Je viens de lire la doc de la nullpointerexception et il faudrait apparement que la valeur à laquelle j'accède soit null pour lancer cette exception.


---------------
Du taf dans le Logiciel Libre : https://www.linuxjobs.fr
Reply

Marsh Posté le 04-05-2005 à 17:01:26    

cesarr89 a écrit :

Citation :

C'était pas moi, c'était le vrai moins moins : la mèche derrière le belge


 
Dsl pour lui alors.


On est tous un peu désolé pour moins moins.
 
chaica > je vois pas.


---------------
Le site de ma maman
Reply

Marsh Posté le 04-05-2005 à 17:03:15    

chaica a écrit :

Je viens de lire la doc de la nullpointerexception et il faudrait apparement que la valeur à laquelle j'accède soit null pour lancer cette exception.


Beh ouais, c'est l'idée d'un NPE  [:airforceone]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 04-05-2005 à 17:13:49    

Bonjour,
 
Tu as deux tableauBouton différents.
L'un est un attribut de la classe, jamais initialisé :

Code :
  1. public JRadioButton tableauBouton [ ] ;


L'autre est défini dans ta méthode, et est initialisé :

Code :
  1. JRadioButton tableauBouton [] = new JRadioButton[ laf.length ] ;


 
Dans la boucle "if" du actionPerformed qui pose problème, le tableauBouton appelé est naturellement le premier (l'attribut de la classe), jamais initialisé.
 
Remplacer  

Code :
  1. JRadioButton tableauBouton [] = new JRadioButton[ laf.length ] ;


par

Code :
  1. tableauBouton = new JRadioButton[ laf.length ] ;


devrait résoudre le problème.
 
Nicolas
 
PS - cela ne cause pas d'erreur, mais ne devrais-tu pas remplacer
UIManager.getLookAndFeel().getName()
par
laf[lafNo].getName()
dans ta boucle de création des boutons, pour faire correspondre ces boutons à tous les LAF disponibles ?
 
Nicolas


Message édité par Nicolas_75 le 04-05-2005 à 17:16:09
Reply

Marsh Posté le 04-05-2005 à 17:16:03    

[:klem3i1]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-05-2005 à 17:26:38    

Aïe aïe aïe. Merci beaucoup, j'aurai sûrement mis bcp de temps à comprendre mon erreur. Ton ps aussi m'a aidé . Grand merci (pour la seconde fois en 2 jours :) )


---------------
Du taf dans le Logiciel Libre : https://www.linuxjobs.fr
Reply

Marsh Posté le 04-05-2005 à 18:34:19    


Alors, Docteur, s'agit-il bien d'une NPE traitée par votre tutoriel ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 04-05-2005 à 20:23:30    

en l'occurence c moi qui en aie parlé dans le topic  :whistle:


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 04-05-2005 à 20:25:23    

Jubijub a écrit :

en l'occurence c moi qui en aie parlé dans le topic  :whistle:


J'avais bien dit "Vrai mwin mwin et consorts". Nous sommes les consorts, les petites mains qui font le boulot alors que mwinmwin récolte la gloire! :fou:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 04-05-2005 à 21:30:31    

oui, c't'un scandale....
 
je propose une grève le 16 pour mettre fin à cet état de fait


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 04-05-2005 à 21:33:47    

Mwin mwin, si t'es un homme, viens t'batt' ! [:florentg]


Message édité par sircam le 04-05-2005 à 21:34:06

---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 04-05-2005 à 21:54:28    

(la grève c une private joke, aujourd'hui au boulot les gars de la CGT ou un vrai syndicat, je sais plus, sont venu en bande poser des tracts contre la journée de solidarité.
 
Pour les non français, le gouvernement fra a décidé que les français se verraient sucrer un jour férié, qui sera travaillé normalement, le bénéfice de charge sup étant destiné aux petits vieux...
 
et donc ct un appel à la grève


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 04-05-2005 à 21:55:37    

http://simogeo.free.fr/hfr/pingouino_cavalier.gif


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-05-2005 à 22:55:49    

[:pingouino] gniiiiiii


---------------
IVG en france
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed