Déplacer un JPanel avec un Timer
Salut à tous! Voilà mon problème, j'utilise Timer et le JPanel se déplace mais sort de l'écran. Or je ne veux le déplacer qu'à une position bien définie. Voilà mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
public void move(){
Dimension size = this.getPreferredSize();
setBounds(position_x, position_y, size.width, size.height);
Timer tm = new Timer(6,new ActionListener() {
public void actionPerformed(ActionEvent e) {
int i=0;
while( i<5){
position_x++;
position_y--;
i++;
if(i==5){break;}
}
}});
tm.start();
} |
Voilà les class où je compte utiliser pour le Timer
Merci pour la réponse.
Donc voilà :
/*/Class Essai où on appelle la class ballon/*/
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
|
public class Essai extends JPanel{
final MonJSlide puissance = new MonJSlide(100, 0, 0, 10, 20);
final MonJSlide degre = new MonJSlide(180, 0, 0, 15, 30);
final Ballon ball = new Ballon();
public Essai(){
JLabel lab_h = new JLabel();
String h = "D:/Rugby/h.png";
JLabel instruction = new JLabel("Instructions");
JLabel instruction0 = new JLabel("- Choisissez la puissance de votre tir.");
JLabel instruction1 = new JLabel("- Choisissez le degre du tir ");
JLabel instruction2 = new JLabel("- Cliquez sur le ballon pour faire un essai ");
JLabel instruction3 = new JLabel("- Attention, choisissez bien vos valeurs!!! ");
setLayout(null);
insertImage(lab_h,h);
Dimension size = lab_h.getPreferredSize();
lab_h.setBounds(0,0,
size.width, size.height);
size = ball.getPreferredSize();
ball.setBounds(343,480,
size.width, size.height);
ball.tirerDrop(puissance.getIndice(),degre.getIndice());
ball.setFocusable(true);
size = puissance.getPreferredSize();
puissance.setBounds(830,360,
size.width, size.height);
size = degre.getPreferredSize();
degre.setBounds(830,300,
size.width, size.height);
add(ball);
add(lab_h);
add(degre);
add(puissance);
}
public void insertImage(JLabel contenant_image, String path_name){
ImageIcon icon = new ImageIcon(path_name);
contenant_image.setIcon(icon);
}
} |
La Class Ballon
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
|
public class Ballon extends JPanel{
int force = 10;
int degre;
int position_x = 343;
int position_y = 480;
public Ballon(){
JLabel lab_ball = new JLabel();
String ball = "D:/Rugby/ballon.png";
ImageIcon icon = new ImageIcon(ball);
lab_ball.setIcon(icon);
add(lab_ball);
}
public void tirerDrop(int force, int degre){
this.addMouseListener(new EssaiListener(this));
}
public void move(){
Dimension size = this.getPreferredSize();
setBounds(position_x, position_y, size.width, size.height);
Timer tm = new Timer(6,new ActionListener() {
public void actionPerformed(ActionEvent e) {
int i=0;
while( i<5){
position_x++;
position_y--;
i++;
}
}});
tm.start();
}
} |
Et le Listener de la Class Ballon et Essai
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
public class EssaiListener implements MouseListener{
Ballon balle;
public EssaiListener(Ballon ball){
balle = ball;
ball = balle;
}
public void mouseClicked( MouseEvent e )
{
balle.move();
}
public void mousePressed(MouseEvent e){
}
public void mouseReleased(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
} |
J'espère que tu vois où je veux en venir. Et merci d'avance. :)