Bonjour, alors tout d'abord ceci vient d'un énoncé scolaire donc je dois bien faire 2 fenêtres différentes.
Le principe est de créer un "genre de billard", plutôt un flipper enfaite, avec des obstcales et où une balle est lancée, à chaque fois que la balle touche un obsctale, des points sont comptabiliser et afficher dans une autre fenêtre que la fenêtre principale.
Je vais essayer d'être clair en vous montrant mon code :
Ma classe Fenetre : la fenetre principale contenant le "billard" (flipper).
La classe fenetrePoints :
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 public class Fenetre extends JFrame { private Container container; private Billard billard; public Fenetre (String titre) { super(titre); setBounds(100, 100, 485, 655); //Position x, position y (coin haut gauche), largeur, hauteur. MyWindowListener winListener = new MyWindowListener (); this.addWindowListener(winListener); this.billard = new Billard (); container = getContentPane (); container.setLayout(new BorderLayout()); container.add(billard, BorderLayout.CENTER); FenetrePoints fenetrePoints = new FenetrePoints("Points", billard); // Créer la 2ème fenêtre censer afficher les points. this.setVisible(true); }
La classe du compteur :
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 public class FenetrePoints extends JFrame { private Container container; private Billard billard; public FenetrePoints (String titre, Billard billard) { super(titre); this.billard = billard; //billard.setIgnoreRepaint(true); J'ai essayer cette méthode mais ça ne fonctionne pas. setBounds(800, 100, 200, 200); container = getContentPane(); container.setLayout(new BorderLayout()); container.add(new Compteur(this.billard)); this.setVisible(true); }
Et enfin ma Thread qui réaffiche constamment les points.
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 public class Compteur extends JPanel { private Billard billard; private ThreadPoints threadPoints; public Compteur (Billard billard) { this.billard = billard; threadPoints = new ThreadPoints(this); Thread t = new Thread(threadPoints); t.start(); } @Override public void paint (Graphics g) { g.drawString(" " + billard.getTotalPoints(), 20, 20); } }
Bon maintenant mon problème c'est que les points s'affiche bien mais par contre un 2ème "billard" se dessine dans la 2ème fenêtre, or je ne l'ai jamais demandé..
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 public class ThreadPoints implements Runnable { private Compteur compteur; private boolean continuer; public ThreadPoints (Compteur compteur) { this.compteur = compteur; continuer = true; } @Override public void run () { while(continuer == true) { compteur.repaint(); } } }
J'ai remarqué en mettant la fonction repaint() à l'intérieur de la Thread en commentaire, que le paint() du compteur n'affiche pas le billard mais bien le repaint(), alors je me demande vraiment pourquoi..
Déjà merci d'avance pour vos réponses ! :/








Répondre avec citation


La plupart des réponses à vos questions sont déjà dans les 

Partager