repaint() non appelé mais paintComponent(g) oui
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:
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:
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:
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