Bonjour,
Tout d'abord je tiens a dire que j'ai chercher du coté de la faq et sur le site mais j'ai un probleme de compréhension.
Bon voila en fait je fais un pacman actuellement et je voudrais afficher le string "Pause" lorsque l'on déclenche une pause.
Pour dessiner le labyrinthe plus les personnages j'ai redefini la méthode paint de mon composant graphics (Jpanel).
Voici la méthode paint() :
Voila bon tous ce passe bien l'image est correctement affichée et elle est rafraichie par un thread .
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 void paint(Graphics g) { // Pour faire du double-buffering if (graph == null){ Dimension taille = Toolkit.getDefaultToolkit().getScreenSize(); img = createImage(taille.width, taille.height); graph = img.getGraphics(); } // Effacement de l'ecran graph.setColor(Color.BLACK); graph.fillRect(0, 0, getWidth(), getHeight()); this.laby.dessiner(graph); this.pac.dessiner(graph); for(int i=0;i<super.listeFantome.size();i++) { ((Fantome) super.listeFantome.get(i)).dessiner(graph); } // Affichage de l'image g.drawImage(img,0,0,this); }
Lors de l'action pause je stop tous les threads des personnages.
Jusque la tout fonctionne bien.
Maintenant je voudrais afficher "pause" lorsque je declenche l'action pause.
Pour cela j'ai besoin d'accéder au composant graphics et je ne souhaite pas modifier le code de paint().
je c que je dois mettre ca comme codeselon la faq java)
Voici mon thread :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public void gestionPause() { pause=!pause; if(pause) { /** Ecriture dans une image 'img' */ Graphics2D g2d = (Graphics2D)img.getGraphics(); g2d.drawString("HelloWord",x,y); } }
mais ca marche pas.
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 void run() { while (t == Thread.currentThread()) { if(!pause) { try { this.repaint(); this.gestionEtatSpecial(); this.gestionRencontre(); Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); break; } } } }
Je crois que ca se voit bien que je comprend pas trop la logique de l'affichage puisque je n'arrive pas m'expliquer clairement...
Merci d'avance ![/i]
Partager