Problème d'affichage d'une image GIF
Dans mon programme, j'ai une fonction qui parcours la grille pour l'afficher, et notamment teste si la case testée contient de la nourriture. Jusqu'à maintenant, je représentait la nourriture par un JLabel avec la quantité de nourriture en texte, et je mettait ce label dans un Jpanel. J'ai voulu remplacer ces jlabels de textes par des gifs, et je récupère une NullPointerException. Voici les codes :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
public void identifierContenuCase(int i,int j){
p=new JPanel();
l=new JLabel();
Case c=grille.grille[i][j];
if(c.contientNour())
{
//t=" "+c.nourriture.getNourriture(); //affichage d'avant
p.add(afficherNourriture(i,j,largeur)); //nouvel affichage (c'est ici que sort l'exception)
p.setBackground(jaune);
} |
et dans la méthode afficherNourriture, c'est sur la ligne --pan = new ImageIcon(url);-- appellée que sort l'exception
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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
public JLabel afficherNourriture(int i,int j,int l){
int t=grille.grille[i][j].nourriture.getNourriture();
URL url=null;
ImageIcon pan=null;
JLabel lab=null;
switch(t){
case 5 : {
if(l<=8)
url= getClass().getResource("/evolution/bouffe/5.gif");
else url= getClass().getResource("/evolution/bouffe/5p.gif");
pan = new ImageIcon(url);
lab = new JLabel(pan);
return lab;
}
case 10 :{
if(l<=8)
url= getClass().getResource("/evolution/bouffe/10.gif");
else url= getClass().getResource("/evolution/bouffe/10p.gif");
pan = new ImageIcon(url);
lab = new JLabel(pan);
return lab;
}
case 15 :{
if(l<=8)
url= getClass().getResource("/evolution/bouffe/15.gif");
else url= getClass().getResource("/evolution/bouffe/15p.gif");
pan = new ImageIcon(url);
lab = new JLabel(pan);
return lab;
}
case 20 :{
if(l<=8)
url= getClass().getResource("/evolution/bouffe/20.gif");
else url= getClass().getResource("/evolution/bouffe/20p.gif");
pan = new ImageIcon(url);
lab = new JLabel(pan);
return lab;
}
case 25 :{
if(l<=8)
url= getClass().getResource("/evolution/bouffe/25.gif");
else url= getClass().getResource("/evolution/bouffe/25p.gif");
pan = new ImageIcon(url);
lab = new JLabel(pan);
return lab;
}
case 30 :{
if(l<=8)
url= getClass().getResource("/evolution/bouffe/30.gif");
else url= getClass().getResource("/evolution/bouffe/30p.gif");
pan = new ImageIcon(url);
lab = new JLabel(pan);
return lab;
}
case 35 :{
if(l<=8)
url= getClass().getResource("/evolution/bouffe/35.gif");
else url= getClass().getResource("/evolution/bouffe/35p.gif");
pan = new ImageIcon(url);
lab = new JLabel(pan);
return lab;
}
case 40 :{
if(l<=8)
url= getClass().getResource("/evolution/bouffe/40.gif");
else url= getClass().getResource("/evolution/bouffe/40p.gif");
pan = new ImageIcon(url);
lab = new JLabel(pan);
return lab;
}
case 45 :{
if(l<=8)
url= getClass().getResource("/evolution/bouffe/45.gif");
else url= getClass().getResource("/evolution/bouffe/45p.gif");
pan = new ImageIcon(url);
lab = new JLabel(pan);
return lab;
}
case 50 :{
if(l<=8)
url= getClass().getResource("/evolution/bouffe/50.gif");
else url= getClass().getResource("/evolution/bouffe/50p.gif");
pan = new ImageIcon(url);
lab = new JLabel(pan);
return lab;
}
default : return lab;
}
} |
J'ai fait cette 2è méthode pour éviter d'avoir à créer tous les labels à chaque appel de la méthode afficherContenu(), sachant que celle-ci est appellée n² fois pour une grille de largeur n, et ce très régulièrement dans le programme. merci pour votre aide.