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 :
Et voici le code de ma classe qui gére les événements
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
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
D'après les recherches que j'ai faite,le message indiquerai que le programme effectue ne boucle infinie,mais où est l'erreur.
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
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
Merci
Partager