Comment mettre une action sur un bouton [Résolu]

Messages postés
4
Date d'inscription
mercredi 14 février 2007
Statut
Membre
Dernière intervention
25 mai 2007
- - Dernière réponse : cs_azazelle
Messages postés
4
Date d'inscription
mercredi 14 février 2007
Statut
Membre
Dernière intervention
25 mai 2007
- 25 mai 2007 à 19:33
Bonsoir je voudrais soliciter une petite aide de la part de quelqu'un car je ne trouve vraiment pas la solution.
Voila en fait je veux creer une fenetre de demarage pour mon jeu en effet j'ai creer un jeu de tetris et j'ai temporiser le temps de descente des pieces a zero a l'origine et j'ai creer un fenetre de démarage qui devrait initialiser la valeur de la descente à 1 mais voila j'ai un gros probléme ça ne marche pas quelqu'un peut m'aider???

Ma variable de temps est k il est a la valeur de 0 initialement dans ma class Game manageret je voudrai la faire passer à un lorsque je clique sur ok

 la je vous montre ma class GamePaneltest c'est celle qui permet de gerer l'affichage de mon jeu. J'ai surligner en vert les endroits qui me semble important pour que vous puissiez m'aider

-----------------------------------------------------------------------------------------------------------------------------------------
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.* ;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.*;

public class GamePanelTest extends JPanel{
    private GameManager gm;
    private int tailleC=30;
    private int nbLigne=20;
    private int nbColonne=10;
   
    public GamePanelTest(){
        gm=new GameManager(this,nbColonne,nbLigne,tailleC);
        setBackground(Color.WHITE);
        setVisible(true);
        repaint();
    }
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.lightGray);
        for(int i=0;i<=nbLigne;i++){//lignes verticales
            g.drawLine(0,i*tailleC,tailleC*nbColonne,i*tailleC);
        }
        for(int i=0;i<=nbColonne;i++){//lignes horizontales
            g.drawLine(i*tailleC,0,i*tailleC,tailleC*nbLigne);
        }
        Graphics2D g2= (Graphics2D) g;
        gm.dessinerItems(g2);
    }
   
   
   
    class GameKeyListener implements KeyListener  {

       
        public void keyPressed(KeyEvent e) {
            switch(e.getKeyCode()){
            case KeyEvent.VK_LEFT:;
            case KeyEvent.VK_KP_LEFT: gm.performMove(GameManager.MOVE_LEFT);break;
            case KeyEvent.VK_RIGHT:;
            case KeyEvent.VK_KP_RIGHT: gm.performMove(GameManager.MOVE_RIGHT);break;
            case KeyEvent.VK_UP:;
            case KeyEvent.VK_KP_UP: gm.performMove(GameManager.MOVE_ROTATE);break;
            case KeyEvent.VK_DOWN:;
            case KeyEvent.VK_KP_DOWN: gm.performMove(GameManager.MOVE_DOWN);break;
           
            }   
        }

       
        public void keyReleased(KeyEvent e) {
                       
        }

       
        public void keyTyped(KeyEvent e) {
                       
        }
       
    }
   
    public static void main(String[] args) {
        JFrame jf=new JFrame("test viral !");
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        GamePanelTest gpanel=new GamePanelTest();
        jf.getContentPane().add(gpanel);
        jf.setSize(610,650);
        jf.setVisible(true);
        jf.addKeyListener(gpanel.getListener());
        Demarage.afficheMessage (jf, "Welcome");        // Affiche la fenetre de démarage
    }

   
    private KeyListener getListener() {
        return new GameKeyListener();
    }
}
class Demarage                        //Creation de la fenetre de démarage avec le bouton ok
{ static void afficheMessage (JFrame parent, String message)
    {//création de l'objet boite de dialogue
      JDialog boiteMessage = new JDialog (parent, "MESSAGE", true) ;
      boiteMessage.setSize (400,300);
      //mise en place des composants : bouton OK, etiquette
      Container contenu = boiteMessage.getContentPane();
      contenu.setLayout (new FlowLayout()) ;
      JLabel txt = new JLabel (message) ;
      contenu.add (txt) ;
      JButton ok = new JButton ("OK");
      contenu.add (ok);
      ok.addActionListener (new EcouteOK (boiteMessage));
      //affichage du dialogue
      boiteMessage.setVisible (true);
      // fin sur OK - rien a tester ici
      boiteMessage.dispose();
    }
}
class EcouteOK implements ActionListener
{ public EcouteOK (JDialog bd)
    {this.bd=bd;
}
public void actionPerformed (ActionEvent e)
    {bd.setVisible (false);
    }
    private JDialog bd;
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
110
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
28 août 2012
1
3
Merci
---> plantage lors de l'envoi de la réponse, je recommence !

Hello,

Je pense que tu dois intégrer la nouvelle affectation de la valeur de k dans ta méthode actionPerformed gérant les évènements sur le bouton OK.
Pour celà, je te propose de :

- créer un constructeur vide dans ta classe GameManager pour ne pas te retaper le passage de tous les paramètres !
- créer une méthode setValue dans cette même classe
- actualiser la valeur de k à partir de cette méthode, en créant une instance de GameManager dans actionPerformed
- passer de bd.setVisible(false) à bd.dispose() pour que la fenêtre soit complètement abandonnée.

Ca donnerait...

class EcouteOK implements ActionListener
{
public EcouteOK (JDialog bd)
{
this.bd=bd;
}

public void actionPerformed (ActionEvent e)
{
gm=new GameManager();
gm.setValue(1);
bd.dispose();
}
private JDialog bd;
private GameManager gm;
}

Et les méthodes à ajouter à ta classe GameManager :

GameManager()
{}

public void setValue(int i)
{
k=i;
}

Je ne sais pas si c'est forcément le plus simple, mais ça marche.

A +,

amundain

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 152 internautes nous ont dit merci ce mois-ci

Commenter la réponse de amundain
Messages postés
110
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
28 août 2012
1
0
Merci
<hr size="2" width="100%" />

Si Java bien, Java mine.
Commenter la réponse de amundain
Messages postés
4
Date d'inscription
mercredi 14 février 2007
Statut
Membre
Dernière intervention
25 mai 2007
0
Merci
Merci le probleme et résolu et beaucoup mieu même franchement je doit un fier chandelle à amundain Merci bcp
Bye
           Az
Commenter la réponse de cs_azazelle