Bonjour,
J'ai réalisé plusieurs petits jeu et programmes en c++ à l'aide de la librairie SDL.
Pour plusieurs raisons, il faut que je mette à en faire également en java. Je suis donc novice à la fois en java et à la fois en ce qui concerne la partie swing.
Voici mon problème :
Avec la SDL sous c++, si je voulais afficher deux fois la même image à des endroits différents de la fenêtre, ça se passait ainsi :
- déclaration de l'image (SDL_loadBmp)
- assignement de la première position de l'image
- on "colle" l'image avec SDL_blitSurface
- assignement de la deuxième position de l'image
- on colle à nouveau l'image
- on met à jour l'écran (la surface) avec SDL_Flip()
Cependant, dans java, avec swing, c'est pas trop la même manière de fonctionner
Voilà ce que j'ai essayé de faire :
J'ai créé une classe CollerImage, qui possède les attributs posX,posY (ce sont deux int qui sont les coordonnées de l'image) ainsi que l'attribut ImFile (c'est un string qui contient le nom du fichier à charger). Voici la méthode paintComponent de cette classe :
public void paintComponent(Graphics g)
{
try {
Image img = ImageIO.read(new File(this.ImFile));
g.drawImage(img, posX, posY, this);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
J'ai une autre classe nommée Fenetre, dans laquelle je déclare un objet : CollerImage image = new CollerImage();
Je configure tout bien la fenetre en elle-même, sans oublier de la mettre visible (this.setVisible(true);) ainsi que (et ça je sais pas si c'est adéquat) this.setContentPane(image);
Ensuite, je colle une première fois l'image, en l'ayant bien configurée au préalable :
image.setImFile("test.bmp");
imname.setPosX(500);
imname.setPosY(500);
imname.repaint();
Ceci fonctionne, j'ai la bonne image qui se colle au bon endroit de l'écran.
Ensuite, si j'ajoute :
image.setImFile("test.bmp");
imname.setPosX(800);
imname.setPosY(800);
imname.repaint();
Seule la deuxième image est collée, la première est passée aux oubliettes.
Je sais que j'ai probablement rien compris, mais je sais aussi que j'ai suivi deux "cours" sur cette partie et passé deux jours à tenter de régler le problème
Pouvez-vous m'aider?
Merci d'avance 