Déplacer une Image sur un Panneau en Java (java graphique)
Bonjour,
Je me tourne vers vous après quelques heures de recherche sur votre site, mais rien ne semble correspondre à ma recherche.. D’où ma question, j'aimerai déplacer une image sur un JPanel a l'aide d'un Thread
J'ai déjà réussi a l'ajouter sur le Panneau mais je n'arrive pas a la faire se déplacer sur ce panneau c'est comme si le Thread ne voulais pas "agir"
Code:
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 74 75 76 77 78 79
|
package insertionimage;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JFrame;
import javax.swing.JPanel;
class FenetrePrincipale extends JFrame
{
FenetrePrincipale ()
{
setBounds(10,10,1280, 1024);
setTitle("Test");
AfficheImage aff =new AfficheImage("animation-2.png");
setContentPane(aff);
getContentPane().setLayout(new BorderLayout());
this.setVisible(true);
}
}
class AfficheImage extends JPanel
{
private Image img;
private int x = 100;
private int y = 100;
AfficheImage(String s)
{
img = getToolkit().getImage(s);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(eau, x, y, 480,200, this);
}
public void bouge()
{
x += 1;
y += 2;
}
public Image getImage()
{
return img ;
}
}
class ThreadImage extends Thread{
private AfficheImage aff;
public ThreadImage(AfficheImage a)
{
aff = a;
}
public void run()
{
while(true)
{
try{
Thread.sleep(10);
aff.bouge();
aff.repaint();
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
class Affichages
{
public static void main(String[] args)
{
FenetrePrincipale test = new FenetrePrincipale ();
}
} |
j'espère que le code est suffisamment lisible, voilà je pense que c'est un problème au niveau de la méthode bouge() et que mon Thread ne sait pas modifier les coordonnées de mon image.
je ne vois pas comment procéder pour le faire fonctionner, auriez-vous une idée pour débloquer la situation ?
Cordialement.