Votre question

[RESOLU] Java: StackOverflow

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
31 Janvier 2006 16:45:57

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!

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

Autres pages sur : resolu java stackoverflow

31 Janvier 2006 17:13:13

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

dans la classe Bouton:
  1. public void addActionListener(ActionListener a){this.addActionListener(a);}


et dans la boucle for:
  1. bouton[i][j].addActionListener(this);


donc forcément, il aime pas!
il fallait juste enlever:
  1. public void addActionListener(ActionListener a){this.addActionListener(a);}


Merci en tout cas, et dslé du dérangement
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS