execution interface graphique

execution interface graphique - Java - Programmation

Marsh Posté le 22-10-2005 à 20:29:29    

Bonjour,
J'ai créé une interface graphique sous java. Je résume rapidement mon inteface. Donc j'ai une fenetre, qd j'appuie sur le bouton entrez j'arrive sur une deuxieme page. Qd j'appuie sur annulez je reviens à la première page. A première vue mon interface marche correctemment. Mais en fait quand j'appuie plusieurs fois de suite sur entrez puis annulez mon application ralenti. J'ai remarqué qu'a force d'appuyer sur ces boutons mon code au lieu de s'executer une fois, il s'exécute plusieurs fois et ca va exponentiellement. Ca fait pas mal de temps que je suis dessus et je vois pas d'où ca peut venir. Pour etre plus explicit je vous joins mon code ( je sais pas si ca se fait  :ange: ).
En tout cas merci d' avance
 

Code :
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. public class test extends JFrame
  5. {
  6. private Frame f = new Frame();
  7. private JPanel promo = new JPanel();
  8. private JPanel logo = new JPanel();
  9. private JPanel ppal = new JPanel();
  10.    
  11. private JLabel acc = new JLabel ("Bienvenue dans un autre monde" );
  12. private JLabel sel = new JLabel ("Faites votre sélection" );
  13. private JButton entree= new JButton ("Entrez" );
  14. private JButton prepayee= new JButton ("Rouge" );
  15. private JButton recharge= new JButton ("Blanc" );
  16. private JButton annule= new JButton ("Annulez" );
  17. public void Fenetre()
  18. {       
  19.         f.setLayout(new BorderLayout());
  20.         promo.setLayout(new FlowLayout(FlowLayout.CENTER,1152,75));
  21.         promo.setBackground(new Color(8, 153, 0));
  22.         logo.setLayout(new FlowLayout(FlowLayout.CENTER,75,864));
  23.         logo.setBackground(new Color(8, 153, 0));
  24.         GridBagLayout repartiteur = new GridBagLayout();
  25.         GridBagConstraints contraintes;
  26.         ppal.setLayout(repartiteur);
  27.      ppal.setBackground(Color.BLACK);
  28.      contraintes = new GridBagConstraints();
  29.  contraintes.gridwidth = GridBagConstraints.REMAINDER;
  30.  contraintes.anchor = GridBagConstraints.NORTH;
  31.  contraintes.ipady = 50;
  32.  repartiteur.setConstraints(acc, contraintes);
  33.  acc.setFont(new java.awt.Font("Times", 0, 50));
  34.  acc.setForeground(Color.RED);
  35.  ppal.add(acc);
  36.    
  37.  contraintes = new GridBagConstraints();
  38.  contraintes.anchor = GridBagConstraints.CENTER;
  39.  repartiteur.setConstraints(entree, contraintes);
  40.  entree.setForeground(Color.RED);
  41.  ppal.add(entree);
  42.        
  43.         f.add(promo,BorderLayout.NORTH);
  44.         f.add(logo,BorderLayout.EAST);
  45.         f.add(ppal,BorderLayout.CENTER);
  46.         f.setSize(1152, 864);
  47.         f.setVisible(true);
  48.         entree.addActionListener(new ActionListener()
  49.         {
  50.          public void actionPerformed(ActionEvent event)
  51.             {
  52.              System.out.println("appuyé sur entrez" );
  53.              ppal.removeAll();
  54.              ppal.repaint();
  55.              Selection();
  56.             }
  57.         });
  58. }
  59. protected void Selection()
  60. {
  61.  ppal.setLayout(null);
  62.  sel.setFont(new java.awt.Font("Times", 0, 50));
  63.  sel.setForeground(Color.RED);
  64.  sel.setBounds(250,10,1000,60);
  65.  ppal.add(sel);
  66.  recharge.setBounds(300,300,150,50);
  67.  ppal.add(recharge);
  68.  prepayee.setBounds(550,300,150,50);
  69.  ppal.add(prepayee);
  70.  f.setVisible(true);
  71.  annule.setBounds(890,640,80,25);
  72.  ppal.add(annule);
  73.  annule.addActionListener(new ActionListener()
  74.  {
  75.   public void actionPerformed(ActionEvent event)
  76.      {
  77.       System.out.println("appuyé sur annule" );
  78.       ppal.removeAll();
  79.       ppal.repaint();
  80.       Fenetre();
  81.      }
  82.  });
  83. }
  84. public static void main(String[] argv)
  85. {
  86.  test f = new test();
  87.  f.Fenetre();
  88.  System.out.println("Démarre" );
  89. }
  90. }


 
Rayley!!!!

Reply

Marsh Posté le 22-10-2005 à 20:29:29   

Reply

Marsh Posté le 24-10-2005 à 01:08:00    

Salut,
 
Ton code est dégeu, mais bon, je le dis pas pour pas passer pour un gros connard. Pis l'important quand on débute, c'est que ça marche. :D
Alors justement pour que ça marche : le problème vient du fait que tu appelles une méthode Fenetre qui crée des trucs, et qui appelle Selection lors d'un appui sur un bouton, Selection crée d'autres trucs et appelle Fenetre... En gros tu crées un gros merdier qui prend de plus en plus de mémoire au fur et à mesure. Le mieux est que tu te bases sur le code suivant :
 

Code :
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. public class test extends JFrame
  5. // déclaration (et pas de construction, ie pas de "new" ) de tes boutons, labels, etc.
  6. private JButton entree;
  7. private JButton annule;
  8. public test() // constructeur, du nom de ta classe, et non pas une méthode
  9. {
  10.  super();
  11.  // création de TOUS tes boutons, de TOUS tes labels, etc.
  12.  entree = new JButton ("Entrez" );
  13.  entree.setVisible(true);
  14.  entree.addActionListener(new ActionListener() 
  15.  {
  16.   public void actionPerformed(ActionEvent event)
  17.   {
  18.    entree.setVisible(false);
  19.    annule.setVisible(true);
  20.   }
  21.  });
  22.  annule = new JButton ("Annule" );
  23.  annule.setVisible(false);
  24.  annule.addActionListener(new ActionListener() 
  25.  {
  26.   public void actionPerformed(ActionEvent event)
  27.   {
  28.    entree.setVisible(true);
  29.    annule.setVisible(false);
  30.   }
  31.  });
  32.  // mise en page de tout ton merdier
  33.  this.setLayout(new GridBagLayout());       
  34.  this.add(entree);
  35.  this.add(annule);
  36.  this.setSize(800,600);
  37.  this.setVisible(true);
  38. }
  39. public static void main(String[] argv)
  40. {
  41.  new test();
  42. }
  43. }


 
Bon, après, je suis pas le messie en Java, mais je pense que c'est un peu plus propre comme solution, à savoir de gérer ce que tu affiches dans les actionPerformed de chaque bouton. Il y a moyen de faire un truc un peu plus évolué avec une machine d'états (avec une variable dont la valeur correspond à un état, donc à une certaine configuration de boutons / couleurs / texte affichés).
 
Aussi, essaie de regrouper les choses ensemble pour rendre ton code plus clair (les "entree", "annule", "this", etc.).
 
Bon courage pour la suite en tout cas.


Message édité par rnoizet le 24-10-2005 à 01:20:12
Reply

Marsh Posté le 25-10-2005 à 17:54:25    

Je te remercie pour la mise en forme de mon code malgré ton manque de politesse!!!!!
 
Pour ceux que ca interresse j'ai trouvé une solution à mon problème alors au lieu d'utiliser removeall(), j'ai utiliser hide et show et éviter de faire des appels à différentes méthodes
 
Rayley!!!!

Reply

Marsh Posté le 25-10-2005 à 17:56:07    

rayley a écrit :

Je te remercie pour la mise en forme de mon code malgré ton manque de politesse!!!!!


:heink:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 25-10-2005 à 21:37:58    

rayley a écrit :

Je te remercie pour la mise en forme de mon code malgré ton manque de politesse!!!!!


à quel moment a t'il manqué de politesse à ton égard ? il te fait une réponse nickel, et c'est comme ça que tu le remercies ?

Reply

Marsh Posté le 26-10-2005 à 08:38:25    

Harkonnen a écrit :

à quel moment a t'il manqué de politesse à ton égard ? il te fait une réponse nickel, et c'est comme ça que tu le remercies ?


[:lorilll]
 
Je propose 1 semaine de TT en vertu de ta nouvelle politique d'éradication des boulets et des malpolis sur la cat PHP qui viennent trainer sur la cat Java. [:dawa]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 26-10-2005 à 13:50:07    

Harkonnen a écrit :

à quel moment a t'il manqué de politesse à ton égard ? il te fait une réponse nickel, et c'est comme ça que tu le remercies ?


Il a dit "dégueu", "connard" et "merdier".
Ces mots sont choquants, au même titre que le mot "cyprine".
(Exemple tout à fait fortuit, bien entendu)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 26-10-2005 à 13:55:57    

"Choquant" n'implique pas "malpoli".
 
[:moundir]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 26-10-2005 à 14:00:56    

La politesse élementaire indique l'éviction de ces mots tant que faire se peut.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 26-10-2005 à 14:02:00    

Harkonnen a écrit :

à quel moment a t'il manqué de politesse à ton égard ? il te fait une réponse nickel, et c'est comme ça que tu le remercies ?


Si tu relis bien ma réponse je le remercie mais j'ai eu l'impression qu'il me prenait un peu de haut d'où ma réponse. Bon si ce n'était pas le cas je m'en excuse. Mais je pense que ca ne sert à rien d'épiloguer dessus.
 
Bisous les mecs
 
Rayley!!!!

Reply

Marsh Posté le 26-10-2005 à 14:02:00   

Reply

Marsh Posté le 26-10-2005 à 14:07:03    

rayley a écrit :

Bisous les mecs


Eh oh, et ta politesse ? [:bistou tt]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 26-10-2005 à 14:08:44    

the real moins moins a écrit :

Eh oh, et ta politesse ? [:bistou tt]


 
autant pour moi :jap:

Reply

Marsh Posté le 26-10-2005 à 14:17:39    

rayley a écrit :

autant pour moi :jap:


10 coups de fouet ou 1 semaine TT. [:dawa]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 26-10-2005 à 14:19:19    

sircam a écrit :

[:lorilll]
 
Je propose 1 semaine de TT en vertu de ta nouvelle politique d'éradication des boulets et des malpolis sur la cat PHP qui viennent trainer sur la cat Java. [:dawa]


je vais l'envisager tiens [:figti]
mais est ce que la cat PHP est plus propre depuis ? sinon ça sert à rien :o

Reply

Marsh Posté le 26-10-2005 à 14:19:54    

rayley a écrit :

autant pour moi :jap:


la politesse et l'orthographe aussi :fou:
"au temps pour moi"

Reply

Marsh Posté le 26-10-2005 à 14:30:39    

Et les majuscules; et la ponctuation. :pfff:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 26-10-2005 à 15:25:03    

Citation :

mais est ce que la cat PHP est plus propre depuis ?


Ca commence tout doucement à porter ses fruits, mais il faut rester vigilant. La cat PHP attire les boulets comme la m... attire les mouches.   [:pingouino]  
 
 
"au temps pour moi" => Les deux sont valables, hein.
 
 [:moundir]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed