Bonjour, j'essaie d'automatiser la modification (réduction de taille) de l'affichage d'une image en modifiant la méthode paintComponent() de JPanel. A la compilation il n'y a aucun problèmes mais dès que je lance l'application je me retrouve avec une exception implicite : NullPointerException dont je n'arrive pas a me dépêtrer ne trouvant pas l'erreur.
Etant un petit débutant , je vous supplie de bien vouloir éclairer ma lanterne en pointant mon erreur.

Voici mon code:
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
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
/**
*       §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
*       § AUTOMATISATION DE LA MODIFICATION D'UNE IMAGE §
*       §              SUR UN JPANEL                   §
*       §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
 
*LA COMPILATION DE RENVOIT PAS D'ERREUR MAIS AU LANCEMENT UNE EXCEPTION IMPLICITE
*
*AMD64:$ java TestImageModif
*Exception in thread "main" java.lang.NullPointerException
*        at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
*        at TestImageModif$ImagePerso.<init>(TestImageModif.java:39)
*        at TestImageModif.initialize(TestImageModif.java:24)
*        at TestImageModif.<init>(TestImageModif.java:13)
*        at TestImageModif.main(TestImageModif.java:58)
*/
 
import java.awt.*;
import javax.swing.*;
 
public class TestImageModif extends JFrame {
 
	public TestImageModif() {
		super();
		initialize();
	}
 
	private JPanel jContentPane = null;
	private String image = "Image001.jpg";//IMAGE A AFFICHER & MODIFIER
	private JPanel monImage;//CONTENEUR DE L'IMAGE
 
 
	private void initialize() {
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
                this.setBounds(100,100,300,300);
		monImage = new ImagePerso();//CLASS IMAGEPERSO() REDEFINIE JPANEL
		this.setContentPane(monImage);
 
	}
 
 
 
 
 
       class ImagePerso extends JPanel  {
 
  	private Image img;      
 
  	public ImagePerso() {
 
   		img = new ImageIcon(getClass().getResource(image)).getImage();
    		repaint(); 
  	}
 
 
  	public void paintComponent(Graphics g) {
 
    		super.paintComponent(g);
    		if (img == null) return;
    		int w = img.getWidth(this);  
    		int h = img.getHeight(this);
    		boolean zoom = (w > getWidth() || h > getHeight());
    		if (zoom) g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
    		else g.drawImage(img, (getWidth()-w)/2, (getHeight()-h)/2, this);
  	}
}   
 
 
    	public static void main(String arg[]) {
	TestImageModif test = new TestImageModif();
	test.setVisible(true);
	}
}