[Resolu] Débutant swing : interface graphique dynamique

Débutant swing : interface graphique dynamique [Resolu] - Java - Programmation

Marsh Posté le 28-08-2006 à 15:16:24    

Bonjour à tous...
 
J'essaye de faire une interface graphique, dont la forme n'est pas figée au départ...
Par exemple, je voudrais que l'utilisateur puisse entrer une valeur n dans un champ texte et que ceci entraine l'apparition de n boutons...
 
J'ai essayé le code suivant :
 

Code :
  1. import java.awt.event.*;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. public class Test2 extends JFrame implements ActionListener {
  5.    
  6.     JTextField c = new JTextField("3",5);
  7.    
  8.     public Test2() {
  9.         super("Title Bar" );
  10.         String val = c.getText();
  11.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  12.         c.addActionListener(this);
  13.         FlowLayout flow = new FlowLayout();
  14.         getContentPane().setLayout(flow);
  15.         for (int i=0; i<Integer.parseInt(c.getText());i++){
  16.             JButton b = new JButton("b"+i);
  17.             b.addActionListener(this);
  18.             getContentPane().add(b);
  19.         }
  20.        
  21.         getContentPane().add(c);
  22.         pack();
  23.         setVisible(true);
  24.     }
  25.    
  26.     public void actionPerformed(ActionEvent evt) {
  27.         Object source = evt.getSource();
  28.             setTitle(source.toString());
  29.             System.out.println("val vaut "+c.getText());
  30.         //repaint();
  31.         //validate();
  32.     }
  33.    
  34.     public static void main(String[] arguments) {
  35.         Test2 frame = new Test2();
  36.     }
  37. }


 
Le problème est que le nombre de boutons reste figé à 3, même si je change la valeur dans le champ de texte... :??:  
Quelqu'un a-t-il une idée?  
 
Merci beaucoup...


Message édité par damcmoi le 28-08-2006 à 16:15:39
Reply

Marsh Posté le 28-08-2006 à 15:16:24   

Reply

Marsh Posté le 28-08-2006 à 15:22:50    

Ben je vois pas trop ou tu modifie le nombre de tes boutons ?  
Dans ton constructeur OK tu as 3 boutons , et OK pour chacun des boutons tu ajoutes un ActionListener mais dans le ActionPerformed tu ne modifie pas ton interface !!!

Reply

Marsh Posté le 28-08-2006 à 15:27:56    

C'est ça que je ne comprends pas...
Dans le ActionPerformed, la valeur de c.getText() est modifiée, mais ça ne se répercute pas dans l'interface...  
Comment je dois faire pour la modifier?

Reply

Marsh Posté le 28-08-2006 à 15:35:30    

tu crée un nouveau constructeur avec un parametre qui est le nombre de boutons que tu souhaite  
et dans ton actionperformed tu rappelle ce constructeur avec la valeur de ton champs text
 
Autrement plus proprement tu crée une méthode changeBouton(nombre de boutons)
et tu deplaces les traitements sur les boutons faits dans ton constructeur

Reply

Marsh Posté le 28-08-2006 à 16:14:46    

Merci beaucoup. :jap:
 
Je ne sais pas pourquoi, mais je m'attendais à ce que le fait de changer la valeur dans le ActionPerformed se répercute dans l'interface, ou alors qu'il y ait une fonction pour mettre à jour l'interface en fonction des nouvelles valeurs...
 
En tout cas, la methode changeBouton est une solution efficace.
 
Merci beaucoup jbourdellon.
:bounce:

Reply

Marsh Posté le 28-08-2006 à 16:22:09    

:jap:

Reply

Sujets relatifs:

Leave a Replay

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