Bonjour,
je suis arrivé à afficher un cercle sur une fenêtre.
je parviens à définir la position du cercle sur l'écran également.
Il me manque le fait de réactualiser automatiquement l'affichage de la fenêtre.
En effet, il me faut réduire la fenêtre et la refaire apparaitre pour voir la balle qui a changé de position.
Voici le 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
17
18
19
20
 
import java.awt.*;
import javax.swing.*;
class Cercle extends JPanel{
	//Positions du cercle
	int x;
	int y;
	//Dimensions du cercle
	int w = 100;
	int h = 100;
	protected void paintComponent(Graphics g){
		super.paintComponent(g);
	        //Dessin du cercle
	        Color cFond = new Color(232,232,132);
	        g.setColor(cFond);
	        g.fillOval(x,y,w,h);
	        g.setColor(Color.black);
	        g.drawOval(x,y,w,h);
	}
}
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
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
 
import java.awt.*;
import javax.swing.*;
class BalleRebondissante{
	public static void main(String[] args){
		int i = 0;
		//Résolution de la fenêtre
		int res_x = 640;
		int res_y = 480;
		//Temps courrant
		long temps_courrant;
		//Temps récupéré
		long temps = 0;
		//Création de la fenêtre
		JFrame f = new JFrame("Balle rebondissante");
		Cercle dessin=new Cercle();
		//Positions initiales de la balle
		dessin.x = 200;
		dessin.y = 2;
		//Dimensions de la fenêtre
		f.setSize(res_x,res_y);
		//Ajout du dessin
		f.add(dessin);
		//Affichage de la fenêtre
		f.setVisible(true);
		//Boucle infinie
		while(1==1){
			//Récupération du temps
			temps_courrant = System.currentTimeMillis();
			//Mise à jour de l'affichage
			if(temps_courrant > (temps + 1000)){
				i++;
				System.out.println("Passé dans la boucle : " + i + " fois.\n");
				temps = temps_courrant;
				//Déplacement de la balle en x
				if(dessin.x<(res_x-dessin.w)){
					dessin.x++;
				}
				//Déplacement de la balle en y
				if(dessin.y<(res_y-dessin.h)){
					dessin.y++;
				}
			}
		}
	}
}
Je voudrais savoir pourquoi l'affichage ne se met pas à jour automatiquement et est-ce qu'il y a une solution?
Merci.