Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3752 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  nullpointerexeption.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

nullpointerexeption.

n°301487
Lunatik3
Serial nounours
Posté le 04-02-2003 à 22:49:45  profilanswer
 

Salut

Code :
  1. import java.awt.*;
  2. class Spectre extends Canvas{
  3.     //constructor
  4.     Spectre(){
  5. setSize(256,256);
  6. setBackground(new Color(128,152,176));
  7. this.drawSpectre();
  8.     }
  9.     private void drawSpectre(){
  10. Graphics spc  = getGraphics();
  11. for(int i=0;i<=255;i++){
  12.     spc.setColor(Color.blue); <= c ici ke ça burne
  13.     spc.drawRect(i,i,1,1);
  14. }
  15.     }
  16.    
  17. }


 
bon voici une classe, d'un prog ke je fait en ce moment et le truc c ke j'ai un problem avec la class Graphics (enfin je pense ke ça vient de la) il me met un nullpointer exception et je vois pas pourkoi.
une idée?

mood
Publicité
Posté le 04-02-2003 à 22:49:45  profilanswer
 

n°301495
fykman
Errare Humanum Est
Posté le 04-02-2003 à 22:55:06  profilanswer
 

Copie/colle le message d'erreur complet que te donne le compilo, pleaze...

n°301496
--greg--
Posté le 04-02-2003 à 22:55:28  profilanswer
 

fykman a écrit :

Copie/colle le message d'erreur complet que te donne le compilo, pleaze...

le compilo sortira pas une nullPointerException :D


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°301497
fykman
Errare Humanum Est
Posté le 04-02-2003 à 22:56:27  profilanswer
 

La fonction getGraphics() te renvoie null.

n°301499
fykman
Errare Humanum Est
Posté le 04-02-2003 à 22:57:26  profilanswer
 

--greg-- a écrit :

le compilo sortira pas une nullPointerException :D


 
merde, ok , je parlais de la JVM....

n°301500
Taz
bisounours-codeur
Posté le 04-02-2003 à 22:57:36  profilanswer
 

et a quel endroit? je crois que le problème est clair: tu as une référence à un objet invalide (NULL) qui venir ssoit du fait que tu as oublier d'instancier un objet (ou de le référencer) soit du fait  que cette instanciation (ou obtention de référence) échoue.

n°301502
fykman
Errare Humanum Est
Posté le 04-02-2003 à 22:58:27  profilanswer
 

++Taz a écrit :

et a quel endroit? je crois que le problème est clair: tu as une référence à un objet invalide (NULL) qui venir ssoit du fait que tu as oublier d'instancier un objet (ou de le référencer) soit du fait  que cette instanciation (ou obtention de référence) échoue.


 
C'est getGraphics() qui renvoie null...

n°301503
gloop
Posté le 04-02-2003 à 22:58:46  profilanswer
 

si tu veux dessiner dans le canvas faut surcharger

Code :
  1. public void paint (Graphics g)

 
là, ton getGraphics() renvoie null

n°301504
Lunatik3
Serial nounours
Posté le 04-02-2003 à 22:59:03  profilanswer
 

Code :
  1. Exception in thread "main" java.lang.NullPointerException
  2.         at Spectre.drawSpectre(Spectre.java:19)
  3.         at Spectre.<init>(Spectre.java:10)
  4.         at WindowArea.<init>(WindowArea.java:40)
  5.         at HexaColor.main(HexaColor.java:10)


 et ça viens pas de la compilation mais de l'execution. dommage...  
 :D  :D  :D  
 
ça emepeche pas ke je veu bien ke tu m'aide evidament.
mais perso j'aime pas les nullpointer exception, je sait jamais ce ki burne.

n°301505
--greg--
Posté le 04-02-2003 à 22:59:24  profilanswer
 

il est probable que ton objet spc soit "null"
... faut voir pq la methode getGraphics renvoie null ...
 
[:grilled]


Message édité par --greg-- le 04-02-2003 à 23:00:51

---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
mood
Publicité
Posté le 04-02-2003 à 22:59:24  profilanswer
 

n°301506
fykman
Errare Humanum Est
Posté le 04-02-2003 à 23:00:10  profilanswer
 

--greg-- a écrit :

il est probable que ton objet spc soit "null"
... faut voir pq la methode getGraphics renvoie null ...


 
Ca fait deux fois que je lui dis....
 
Lunatik3> gloop a raison tu dois surcharger la method paint pour pouvoir recuperer l'environnement graphique de ton objet.


Message édité par fykman le 04-02-2003 à 23:02:32
n°301508
gloop
Posté le 04-02-2003 à 23:00:31  profilanswer
 

--greg-- a écrit :

il est probable que ton objet spc soit "null"
... faut voir pq la methode getGraphics renvoie null ...


au moment de la construction le Graphics n'est pas encore dispo, d'ou le null

n°301510
--greg--
Posté le 04-02-2003 à 23:01:42  profilanswer
 

gloop a écrit :


au moment de la construction le Graphics n'est pas encore dispo, d'ou le null

oui bon ça va, je l'ai vu que j'etais grillé :D


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°301517
Lunatik3
Serial nounours
Posté le 04-02-2003 à 23:08:08  profilanswer
 

dc faut ke je refasse une methode paint c ça?  ou j'appelle l'original juste aprés : Graphics spc  = getGraphics(); (j'ai essayer la derniere et ça marchais pas.
merci de vos reponse fulgurante en tt cas. la je dois dire je suis impressionner.

n°301522
gloop
Posté le 04-02-2003 à 23:10:26  profilanswer
 

oui et tu vires aussi  ton this.drawSpectre();
 

Code :
  1. public void paint (Graphics spc)
  2. {
  3.    for(int i=0;i<=255;i++){
  4.       spc.setColor(Color.blue);
  5.       spc.drawRect(i,i,1,1);
  6.    }
  7. }


Message édité par gloop le 04-02-2003 à 23:12:05
n°301524
--greg--
Posté le 04-02-2003 à 23:10:44  profilanswer
 

tu surcharges paint() en appelant super.paint() puis ton fait ton petit bizness derriere
apres, plus besoin d'appeler ta methode maison dans ton constructeur, aussi..


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°301525
--greg--
Posté le 04-02-2003 à 23:11:02  profilanswer
 

gloop a écrit :

oui et tu vires aussi  ton this.drawSpectre();
 

arrete de me griller tout le temps [:toad666]
 
 
 
:D


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°301533
gloop
Posté le 04-02-2003 à 23:14:24  profilanswer
 

--greg-- a écrit :

tu surcharges paint() en appelant super.paint() puis ton fait ton petit bizness derriere
apres, plus besoin d'appeler ta methode maison dans ton constructeur, aussi..


il est pas obligatoire le super.paint () (cf doc)

n°301535
fykman
Errare Humanum Est
Posté le 04-02-2003 à 23:15:44  profilanswer
 

il est trop fort ce gloop !!  :jap:

n°301536
Lunatik3
Serial nounours
Posté le 04-02-2003 à 23:16:50  profilanswer
 

ça y est ça marche. merci les gars. pour de la performance, c de la performance. super merci. la j'aurai pas trouver tt seule.

n°301537
Lunatik3
Serial nounours
Posté le 04-02-2003 à 23:17:45  profilanswer
 

Code :
  1. import java.awt.*;
  2. class Spectre extends Canvas{
  3.     Graphics spc  = getGraphics();
  4.     //constructor
  5.     Spectre(){
  6. setSize(256,256);
  7. setBackground(new Color(128,152,176));
  8.      
  9.     }
  10.     public void paint(Graphics spc){
  11. for(int i=0;i<=255;i++){
  12.     spc.setColor(Color.blue);
  13.     spc.drawRect(i,i,1,1);
  14. }
  15.     }
  16.  
  17. }


 
bon voila le code final. et merci

n°301538
gloop
Posté le 04-02-2003 à 23:18:02  profilanswer
 

fykman a écrit :

il est trop fort ce gloop !!  :jap:  


gentil  :jap:  mais j'étais pas tout seul

n°301539
fykman
Errare Humanum Est
Posté le 04-02-2003 à 23:18:52  profilanswer
 

LunatiK3 a écrit :

Code :
  1. import java.awt.*;
  2. class Spectre extends Canvas{
  3.     Graphics spc  = getGraphics();
  4.     //constructor
  5.     Spectre(){
  6. setSize(256,256);
  7. setBackground(new Color(128,152,176));
  8.      
  9.     }
  10.     public void paint(Graphics spc){
  11. for(int i=0;i<=255;i++){
  12.     spc.setColor(Color.blue);
  13.     spc.drawRect(i,i,1,1);
  14. }
  15.     }
  16.  
  17. }


 
bon voila le code final. et merci


 
vire moi cette methode getGraphics() non de dieu !  ;)

n°301547
Lunatik3
Serial nounours
Posté le 04-02-2003 à 23:26:05  profilanswer
 

c fait. comment ça ce fait ke ça tourne sans?

n°301551
gloop
Posté le 04-02-2003 à 23:27:53  profilanswer
 

LunatiK3 a écrit :

c fait. comment ça ce fait ke ça tourne sans?


le graphics est passé en paramètre à paint ().
t'aurais pu lire le code avant de faire un copier/coller  :D

n°301555
fykman
Errare Humanum Est
Posté le 04-02-2003 à 23:30:15  profilanswer
 

LunatiK3 a écrit :

c fait. comment ça ce fait ke ça tourne sans?


 
Pour vraiment comprendre le pourquoi de tout ca, il faudrait que tu bosses un peu les tutoriaux de Sun sur Swing ou AWT qui sont tres bien fait...

n°301557
Lunatik3
Serial nounours
Posté le 04-02-2003 à 23:32:18  profilanswer
 

j'ai pas fait de copier coller, j'ai vu ke le graphics est foutu en parametre. Non c bon j'ai capter. qd paint est appeler il existe deja un graphics (on a pas besoin d'un creer un).
alors a koi ça sert getGraphics() alors. ds mon derneier prjet prog (je suis en iut info)les prof ds la source de base ils en mettais pas mal des  getGraphics () et j'en ai rajouter un ou deux.

n°301564
fykman
Errare Humanum Est
Posté le 04-02-2003 à 23:35:56  profilanswer
 

LunatiK3 a écrit :

j'ai pas fait de copier coller, j'ai vu ke le graphics est foutu en parametre. Non c bon j'ai capter. qd paint est appeler il existe deja un graphics (on a pas besoin d'un creer un).
alors a koi ça sert getGraphics() alors. ds mon derneier prjet prog (je suis en iut info)les prof ds la source de base ils en mettais pas mal des  getGraphics () et j'en ai rajouter un ou deux.  


 
2 propositions :  
- soit il utilise getGraphics() dans les cas ou c'est rellement necessaire et ce n'est pas le cas ici
- soit il code avec ses pieds
 
pour savoir laquelle de ces propositions est juste je te propose de lire ce que j'ai posté juste avant....

n°301567
--greg--
Posté le 04-02-2003 à 23:37:53  profilanswer
 

gloop a écrit :


il est pas obligatoire le super.paint () (cf doc)

:jap:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°301569
Lunatik3
Serial nounours
Posté le 04-02-2003 à 23:38:26  profilanswer
 

ouai ok bosser le tut de sun sur awt et swing. je verais. merci.

n°301579
Lunatik3
Serial nounours
Posté le 04-02-2003 à 23:43:16  profilanswer
 

tant k'on y ai vous avez pas une methode plus cool, pour dessiner 1 pixel, parce ke le drawRect() c un peu sortir le char à boeus. j'ai pas trouvez mieux. ds graphics j'ai pas vu mieu en faites.

n°302020
BifaceMcLe​OD
The HighGlandeur
Posté le 05-02-2003 à 09:52:37  profilanswer
 

drawLine(). Je sais, c'est un peu mieux mais pas beaucoup. Mais il n'y a pas de plot() ou de drawPoint().

n°302207
Lunatik3
Serial nounours
Posté le 05-02-2003 à 13:03:05  profilanswer
 

en faite j'ai hesiter entre les deux methode. j'esperai k'il y avait mieu mais tanpis.
merci

n°302212
Serial Cod​er
Posté le 05-02-2003 à 13:23:31  profilanswer
 

c génial Java, obligé de dessiner une ligne ou un rectangle pour un simple pixel :d
trodlaballe ce langage  [:xp1700]


Message édité par Serial Coder le 05-02-2003 à 13:25:40

---------------
Je code en série et en parallèle
n°302301
BifaceMcLe​OD
The HighGlandeur
Posté le 05-02-2003 à 14:33:32  profilanswer
 

La notion de pixel n'a de sens que lorsqu'on manipule la mémoire vidéo dans une résolution donnée. Et les programmes de haut niveau comme les programmes Java ne sont pas censés travailler dans une résolution donnée (bien sûr quand on manipule un bitmap, c'est un peu différent).
 
De toute façon, quiconque a travaillé sur les algorithmes bas-niveau de dessin vous confirmera que dessiner une ligne dont les points de départ et d'arrivée sont les mêmes n'est pas plus coûteux que dessiner un point.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  nullpointerexeption.

 

Sujets relatifs
Plus de sujets relatifs à : nullpointerexeption.


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)