IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Problème Erreur Exception in thread "main" java.lang.StackOverflowError


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 53
    Points : 33
    Points
    33
    Par défaut Problème Erreur Exception in thread "main" java.lang.StackOverflowError
    Bonjour, j'ai essayer de créer une calculatrice en java mais je rencontre l'erreur :
    Exception in thread "main" java.lang.StackOverflowError

    D'après les recherches que j'ai faites, cette erreur ce produit quand il y a une boucle infini qui appelle plusieurs fois un constructeur. Sauf que (je crois) que ce n'est pas le cas dans mon programme.(ou alors je ne trouve pas ou).

    LA CLASSE CALCULATRICE ET SON CONSTRUCTEUR
    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
    public class Calculatrice extends Frame implements WindowListener{//1
    	private MonPad Pad;//2
    	private MesOpe Ope;
    	private MesRes Res;
    	private Label Ecran;
     
    	String chiffre1;
    	String chiffre2;
    	int res;
     
    	public Calculatrice(){
    		super("Calculatrice");
     
    		Pad= new MonPad();
    		Ope= new MesOpe();
    		Res= new MesRes();
    		Ecran= new Label("");
     
    	setLayout(new GridLayout(2,3));//3		
    		add(Ecran);
    		add(Pad);
    		add(Ope);
    		add(Res);
     
    	this.addWindowListener(this);
    	}
    LA CLASSE MONPAD ET SON CONSTRUCTEUR
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    public class MonPad extends Calculatrice implements ActionListener{		//1
     
     
    	private Button b0;	//2
    	private Button b1;
    	private Button b2;
    	private Button b3;
    	private Button b4;
    	private Button b5;
    	private Button b6;
    	private Button b7;
    	private Button b8;
    	private Button b9;
     
    	private Label l1;
    	private Label l2;
     
     
    public MonPad(){
     
    	b0=new Button ("0");
    	b1=new Button ("1");
    	b2=new Button ("2");
    	b3=new Button ("3");
    	b4=new Button ("4");
    	b5=new Button ("5");
    	b6=new Button ("6");
    	b7=new Button ("7");
    	b8=new Button ("8");
    	b9=new Button ("9");
     
    	l1=new Label("");
    	l2=new Label("");
     
    	setLayout(new GridLayout(4,3));		//3
    		add(b7);
    		add(b8);
    		add(b9);
    		add(b4);
    		add(b5);
    		add(b6);
    		add(b1);
    		add(b2);
    		add(b3);
    		add(l1);
    		add(b0);
    		add(l2);
     
     
    		b0.addActionListener(this);
    		b1.addActionListener(this);
    		b2.addActionListener(this);
    		b3.addActionListener(this);
    		b4.addActionListener(this);
    		b5.addActionListener(this);
    		b6.addActionListener(this);
    		b7.addActionListener(this);
    		b8.addActionListener(this);
    		b9.addActionListener(this);
     
     
    	}

    LES ERREURS
    Exception in thread "main" java.lang.StackOverflowError
    at sun.awt.Win32GraphicsConfig.getBounds(Native Method)
    at sun.awt.Win32GraphicsConfig.getBounds(Unknown Source)
    at java.awt.Window.init(Unknown Source)
    at java.awt.Window.<init>(Unknown Source)
    at java.awt.Frame.<init>(Unknown Source)
    at java.awt.Frame.<init>(Unknown Source)
    at Calculatrice.<init>(Calculatrice.java:16)
    at MonPad.<init>(MonPad.java:21)
    at Calculatrice.<init>(Calculatrice.java:19)
    at MonPad.<init>(MonPad.java:21)
    at Calculatrice.<init>(Calculatrice.java:19)
    at MonPad.<init>(MonPad.java:21)
    ...

    Merci d'avance.

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Points : 532
    Points
    532
    Par défaut
    Effectivement, java.lang.StackOverflowError survient lorsque qu'il y a une boucle infinie est tu en as une :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public Calculatrice(){
       super("Calculatrice");
     
       Pad= new MonPad();
       ...
    }
    Lorsque tu fais new MonPad(), tu invoque le constructeur de la classe MonPad(). Or, celle-ci hérite de Calculatrice. Le contructeur de MonPad invoque implicitement celui de Calculatrice (car héritage). On rentoure donc au début de cette explication, tu fais new MonPad(), etc et cela sans fin.

    Si MonPad est un composant qui contient les boutons, il faut l'insérer dans la JFrame.
    Pour cela, je te conseille de faire hériter MonPad de JPanel et de terminer le constructeur de Calculatrice par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.getContentPane().add(Pad);

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 53
    Points : 33
    Points
    33
    Par défaut
    Ah oui merci! J'avais pas penser à l'héritage.

Discussions similaires

  1. Réponses: 15
    Dernier message: 20/01/2011, 15h47
  2. Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    Par Trint dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 27/02/2007, 11h28
  3. Réponses: 8
    Dernier message: 11/05/2006, 19h32
  4. [JDIC]Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    Par kedare dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 06/05/2006, 22h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo