Chose promise, chose due... me revoilà (rapidement) avec une nouvelle question.
Déjà j'ai recodé entièrement mon projet pour que ça soit plus propre. Voilà le topic traitant de mon précédent problème : https://www.developpez.net/forums/d1...enetre-jframe/
Maintenant que j'ai réglé ces soucis d'affichage, le problème est le suivant. Ma méthode repaint m'envoie l'erreur suivante :

Code txt : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Exception in thread "Thread-1" java.lang.NullPointerException
	at jeux2.Chrono.run(Chrono.java:8)
	at java.lang.Thread.run(Unknown Source)

Voici les différentes classes :
Main :
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
package jeux2;
import javax.swing.JFrame;
import java.awt.Dimension;
 
public class Main {
 
	public static Fond fond;
 
	public static void main(String[] args){
		JFrame fenetre = new JFrame("Test");
		fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fenetre.setSize(new Dimension(1920, 1200));
		fenetre.setLocationRelativeTo(null);
		fenetre.setResizable(false);
		fenetre.setAlwaysOnTop(false);
		fenetre.setUndecorated(true);
		Fond fond = new Fond();
		fenetre.setContentPane(fond);
		fenetre.setVisible(true);    
	}
}
Fond :
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
package jeux2;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
 
import javax.imageio.ImageIO;
import javax.swing.JPanel;
 
public class Fond extends JPanel { 
 
	private static final long serialVersionUID = 2290215993065771323L;
 
	public int x = 0;
	public int y = 0;
	public int dx = 0 ;
	public int dy = 0;
 
	public Image fond;
	public Image curseur;
 
	public Fond(){
		super();
		this.dx = 0;
		this.addKeyListener(new clavier());
 
		try{
		this.fond = ImageIO.read(new File("C:/Users/Askiarsh/Desktop/eclipse/jeux2/src/jeux2/img/earth_map_ocean_continents_1920x1200.jpg"));
		this.curseur = ImageIO.read(new File("C:/Users/Askiarsh/Desktop/eclipse/jeux2/src/jeux2/img/test.png"));
		}catch(IOException e){
			System.out.println("exception");
		}
		Thread chrono = new Thread(new Chrono());
		chrono.start();
	}
 
 
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		Graphics g2 = (Graphics2D)g;
		g2.drawImage(this.fond,0,0,null);
		g2.drawImage(this.curseur,100,100,null);
	}
// j'ai viré les get et set pour une meilleure lisibilité

Curseur :
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
package jeux2;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
 
import javax.imageio.ImageIO;
import javax.swing.JComponent;
 
 
public class Curseur extends JComponent{
 
	private static final long serialVersionUID = 8868691716373117721L;
 
	public int x = 0;
	public int y = 0;
	public int dx = 0 ;
	public int dy = 0;
 
		public void paintComponent(Graphics g){
		    try {
		    	Image img = ImageIO.read(new File("C:/Users/Askiarsh/Desktop/eclipse/jeux2/src/jeux2/img/test.png"));
		    	this.deplacement();
		    	g.drawImage(img, x, y, this);
		    } catch (IOException e) {
		      e.printStackTrace();
		    }
		}
Clavier :
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
package jeux2;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
 
public class clavier implements KeyListener{
 
	@Override
	public void keyPressed(KeyEvent e) {
		if(e.getKeyCode() == KeyEvent.VK_Z){
			Main.fond.setDx(1);
		};
		if(e.getKeyCode() == KeyEvent.VK_S) ;
		if(e.getKeyCode() == KeyEvent.VK_Q) ;
		if(e.getKeyCode() == KeyEvent.VK_D) ;
	}
 
	@Override
	public void keyReleased(KeyEvent arg0) {
		// TODO Auto-generated method stub
 
	}
 
	@Override
	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub
 
	}
 
}
Et enfin, la classe chrono d'où provient l'erreur :
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
package jeux2;

public class Chrono implements Runnable{
	private int PAUSE = 3;
	@Override
	public void run() {
			while(true){
				Main.fond.repaint();
				System.out.println("test");
				try {
					Thread.sleep(PAUSE);
				} catch (InterruptedException e) {}
				}
			}
	}
Merci d'avance pour vos réponses.