Bonjour à tous,
Cela fait un bon moment que je suis coincé sur un shoot'em up.Peut-être pourriez vous me donner un coup de main.
La méthode de paintComponent de Joueur n'est pas appelé par repaint().
Console :
vaisseau:10ms CAS 1
vaisseau:10ms CAS 2
vaisseau:10ms CAS 3


Voila un bout de 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
public class Terrain extends JPanel {
	...
	private void initComponents() {
		setLayout(null);
		...
		timerJ_ = new Timer(10, new DeplacerJoueur(this));
	}
	@Override
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		Graphics2D g2d = (Graphics2D) g;
		g2d.drawString(joueur_.getArme() + "    Vies: " + nbVies_
				+ "    Score: " + score_, 480, 30);
		// Toolkit.getDefaultToolkit().sync();g.dispose();
	}
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
public class DeplacerJoueur implements ActionListener {
	private Terrain t_;
	public DeplacerJoueur(Terrain t) {
		t_ = t;
	}
	@Override
	public void actionPerformed(ActionEvent evt) { // tick de timer
		System.out.println("vaisseau:10ms  CAS 1");
		t_.getJoueur().deplacer();
		System.out.println("vaisseau:10ms  CAS 2");
		t_.getJoueur().repaint();
		System.out.println("vaisseau:10ms  CAS 3");
	}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
public class Joueur extends Vaisseau {// Vaisseau herite de JComponent)
	@Override
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		System.out.println("repaint fonctionne");
		Graphics2D g2d = (Graphics2D) g;
		setVisible(true);
		setPreferredSize(new Dimension(50, 19));
		g2d.drawImage(img_, (int) hg_.getX(), (int) hg_.getY(), this);
		g2d.setColor(Color.blue);
	}
}
A la base, j'affichais tout dans paint() de Terrain mais j'ai remplacé par paintComponent() dans chaque objet affiché.
Juste pour tester, lorsque dans le paintComponent de Terrain je met joueur_.repaint() ca n'entre pas dans la méthode.
Cependant joueur_.paintComponent(g) fonctionne (meme si ce n'est pas recommandé et que c'est dans DeplacerJoueur que je veut le mettre).
Je me dit que peut-être paintComponent ne sait pas où se dessiner et paintComponent fonctionne grâce au parametre g ?

Qu'en dîtes-vous ? Merci