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

cs_azazelle 4 Messages postés mercredi 14 février 2007Date d'inscription 25 mai 2007 Dernière intervention - 25 mai 2007 à 00:07 - Dernière réponse : cs_azazelle 4 Messages postés mercredi 14 février 2007Date d'inscription 25 mai 2007 Dernière intervention
- 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
amundain 110 Messages postés mercredi 28 mars 2007Date d'inscription 28 août 2012 Dernière intervention - 25 mai 2007 à 08:58
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

Merci amundain 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

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

Si Java bien, Java mine.
Commenter la réponse de amundain
cs_azazelle 4 Messages postés mercredi 14 février 2007Date d'inscription 25 mai 2007 Dernière intervention - 25 mai 2007 à 19:33
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.