Exception in thread "main" java.lang.StackOverflowError
Bonjour ,
Exception in thread "main" java.lang.StackOverflowError
J'obtiens ce message sur un petit programme de test.Je veux juste pour clarifier mon code gérer les événements dans une classe indépendante de ma classe principale .
voici le code de la classe principale :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
// Creation d'une fenetre et test d'une classe listener indépendante
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Fenetre extends JFrame
{
// Les attributs
JMenu Fichier ;
JMenuItem Ouvrir ;
JMenuBar Menubar ;
// Pour gérer les evnts on a besoin d'une instance de Gestion_Fenetre
Gestion_Fenetre mon_Gestion_Fenetre ;
// Le constructeur
public Fenetre()
{
mon_Gestion_Fenetre = new Gestion_Fenetre();
Menubar = new JMenuBar();
this.setJMenuBar(Menubar) ;
Fichier = new JMenu("Fichier") ;
Ouvrir = new JMenuItem("Ouvrir") ;
Fichier.add(Ouvrir) ;
Menubar.add(Fichier);
Ouvrir.addActionListener(mon_Gestion_Fenetre);
this.setVisible(true);
this.setSize(400,400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// Les méthodes
} // Fin de la classe Fenetre
// La classe de Test
public class Test_Fenetre
{
public static void main (String []argv)
{
Fenetre essai = new Fenetre() ;
}
} // Fin de ma classe de test |
Et voici le code de ma classe qui gére les événements
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
/* Pour gérer les événements par rapport à notre fenetre
On crée une classe à part chargée de gérer les événements
cette classe hérite de java.evnt et est implémentée dans la
classe principale */
import java.awt.event.* ;
class Gestion_Fenetre implements ActionListener
{
// Les attributs
//ActionEvent e ;
Fenetre essai ;
// Le constructeur
public Gestion_Fenetre ()
{
essai = new Fenetre() ;
} // Fin du constrcteur
// Les méthodes
// Cette classe ne fait qe redéfinir la méthode ActionPerformed
public void actionPerformed (ActionEvent e)
{
if ( e.getSource() ==essai.Ouvrir )
System.out.println("Le test a réussi ");
} // fin de la redéfinition
}// Fin de ma classe |
D'après les recherches que j'ai faite,le message indiquerai que le programme effectue ne boucle infinie,mais où est l'erreur.
Merci