Probleme d'un JFrame.dispose();

Résolu
xCirdan Messages postés 15 Statut Membre -  
xCirdan Messages postés 15 Statut Membre -
Quelqu'un pourrait-il me dire pourquoi lorsque j'appuie sur un bouton, rien ne se passe SVP.

import java.awt.event. *;
import java.awt. *;
import javax.swing. *;
import java.awt.GridLayout;

JButton M1,M2,M3;

JFrame Menu;

class GestionClic implements ActionListener {
   public void actionPerformed(ActionEvent e) {
    if (e.getSource()==M1){
    Menu.dispose();
   }else if(e.getSource()==M2){
    Menu.dispose();
   }else if(e.getSource()==M3){
    Menu.dispose();
   }
   }
}

void main() {
   JFrame Menu = new JFrame("Menu");
   Menu.setVisible(true);
   Menu.setLocationRelativeTo(null);
   Menu.setSize(500, 500);
   Menu.setLocationRelativeTo(null);
   GestionClic GC = new GestionClic();
   M1 = new JButton("Solo");
   M2 = new JButton("Multi");
   M3 = new JButton("Quitter");
   Menu.add(M1);
   M1.addActionListener(GC);
   Menu.add(M2);
   M2.addActionListener(GC);
   Menu.add(M3);
   M3.addActionListener(GC);
   GridLayout GL = new GridLayout();
   GL.setColumns(0);
   GL.setRows(3);
   Menu.setLayout(GL);
}


Merci

2 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
Bonjour,

Le problème c'est que tu as déclaré deux fois la variable Menu.
La première est ligne 8, variable globale utilisée dans GestionClic.
La deuxième est ligne 23, variable locale utilisée dans le main.

En gros ce qui se passe, c'est que tu ouvres le menu 23, mais que tu demandes à fermer le menu 8. Donc le menu 23 ne se ferme pas...

Remarque : Java's Cool a un comportement particulier car il mélange un peu les deux variable, en Java pur il n'y aurait pas d'ambiguïté et tu aurais un NullPointerException.
1
xCirdan Messages postés 15 Statut Membre
 
Mais si j enlève la ligne 8, j obtiens une erreur me disant que le programme ne connait pas la frame Menu.
0
xCirdan Messages postés 15 Statut Membre
 
C est bon, j ai résolu le problème. Merci
0