Tom's Guide > Forum > Programmation > [RESOLU] Java: StackOverflow

[RESOLU] Java: StackOverflow

Forum Programmation : [RESOLU] Java: StackOverflow

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour a tous.

voila mon probleme, j'ai une erreur de type StackOverflow, donc prbleme de récursivité incontrolée, de bouclage... bref, de remplissage de la pile d'exec.
seulement ovila, je narrive pas a trouver ou boucle mon programme.

je laisse donc mon code au cas ou une ame généreuse passerait par la... cela dit, etant un code peut etre trop conséquent pour etre lu comme ca, je m'en excuse platement!

Code :
  1. import java.io.*;
  2. import java.awt.*;
  3. import javax.swing.*;
  4. import java.io.*;
  5. import java.awt.event.*;
  6. public class Exercice2 extends JFrame implements ActionListener{
  7.     public class Bouton extends JButton{
  8.         public int _X;
  9.         public int _Y;
  10.         public Bouton(String nom, int x, int y){
  11.             super(nom);
  12.             this._X=x;
  13.             this._Y=y;
  14.             this.setBackground(Color.white);
  15.             this.setForeground(Color.black);//couleurs par défaut
  16.         }
  17.         public int getAbc(){return this._X;}
  18.         public int getOrd(){return this._Y;}
  19.         public void setCouleurFondBouton(Color c){this.setBackground(c);}
  20.         public void setCouleurPoliceBouton(Color c){this.setForeground(c);}
  21.         public void addActionListener(ActionListener a){this.addActionListener(a);}
  22.     }
  23.     private static int H=4;
  24.     private static int L=4;
  25.     private JPanel panel;
  26.     //tableau a deux dimensions pour les boutons (plus simple pour la création)
  27.     private Bouton[][] bouton;
  28.     private Bouton _bouton=null;
  29.     public Exercice2(String frameName){
  30.         setTitle(frameName);
  31.         panel=(JPanel)getContentPane();
  32.         panel.setLayout(new GridLayout(L,H));
  33.         //création des boutons
  34.         bouton = new Bouton[H][L];
  35.         for(int i=0 ; i<L ; i++)
  36.         {
  37.             for(int j=0 ; j<H; j++)
  38.             {
  39.                 bouton[i][j] = new Bouton("B" + i + "." + j, i, j);
  40.                 bouton[i][j].addActionListener(this);
  41.                 panel.add(bouton[i][j]);
  42.             }
  43.         }
  44.     }
  45.     public void actionPerformed(ActionEvent evt) {
  46.         _bouton = (Bouton)evt.getSource();
  47.         int x = _bouton.getAbc();
  48.         int y = _bouton.getOrd();
  49.         System.out.println(x);
  50.         if ((bouton[x][y].getBackground())==Color.white){
  51.             bouton[x][y].setBackground(Color.black);
  52.         }else if ((bouton[x][y].getBackground())==Color.black){
  53.             bouton[x][y].setBackground(Color.white);
  54.         }else{System.out.println("ERREUR SUR BACKGROUND!" );}
  55.         if ((bouton[x][y].getForeground())==Color.white){
  56.             bouton[x][y].setForeground(Color.black);
  57.         }else if ((bouton[x][y].getForeground())==Color.black){
  58.             bouton[x][y].setForeground(Color.white);
  59.         }else{System.out.println("ERREUR SUR FOREGROUND!" );}
  60.     }
  61.     public static void main(String[] args) throws IOException{
  62.         Exercice2 test = new Exercice2("TP5 Exo2" );
  63.         test.pack();
  64.         test.setVisible(true);
  65.     }
  66. }

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Encore une fois, dslé mais jai embeté pour rien... j'ai trouvé la solution!

dans la classe Bouton:

Code :
  1. public void addActionListener(ActionListener a){this.addActionListener(a);}



et dans la boucle for:

Code :
  1. bouton[i][j].addActionListener(this);



donc forcément, il aime pas!
il fallait juste enlever:

Code :
  1. public void addActionListener(ActionListener a){this.addActionListener(a);}



Merci en tout cas, et dslé du dérangement

Répondre à kicoe
Tom's Guide > Forum > Programmation > [RESOLU] Java: StackOverflow
Aller à :

Il y a 2947 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens