[JAVA] Création de JButtons dans une boucle

Création de JButtons dans une boucle [JAVA] - Java - Programmation

Marsh Posté le 07-05-2002 à 00:56:08    

Salut ,  
voila mon probleme
Je voudrais créer des boutons, mais leur nombre n'est pa connu à l'avance.
J'ai un fichier qui est de la forme :  
perso1 nom
perso2 nom
...
 
je peux en avoir n.
 
Donc j'ai besoin d'une boucle à l'interieur de laquelle j'instancie les boutons :  
 
JPanel p = new JPanel();
p.setLayout(new GridLayout(NB_PERSOS,0));
 
for (int i=0; i<vec.size()-1;i++)
{
JButton perso+i = new JButton();  //je voudrais que les boutons s'appellent perso1, perso2 etc...
 
p.add(new JButton((String) vec.get(i)));//vec est la recup du fichier
}
 
Mais il y a un deuxieme probleme car les JButtons ne sont définis que dans la boucle alors que j'ai besoin ensuite d'ajouter des trucs à mes boutons comme par exemple perso1.addActionListener { .....}
 
J'espere que vous avez compris .
 
Merci d'avance.
a+

 

[jfdsdjhfuetppo]--Message édité par RobinMasters le 07-05-2002 à 01:00:14--[/jfdsdjhfuetppo]


---------------
-Hassan Cehef --> C'est possible -Roberttripoux --> Les bons comptes font les bons amis
Reply

Marsh Posté le 07-05-2002 à 00:56:08   

Reply

Marsh Posté le 07-05-2002 à 07:39:21    

je ne sais pas si c'est une bonne solution, mais je les stockerais dans une Hashtable avec, comme key, perso + i pour être sûr d'avoir le bon bouton correspondant à la personne.
 
mais si tu as bcp de personnes... ça risque de pomper pas mal de ressources.
 
je ne savais pas qu'on pouvait faire Bidule truc+i = new Bidule(); :??:


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 07-05-2002 à 08:13:29    

JButton perso+i =  
 
Ca, ca marchera jamais!!!!
 
Le nom d'une variable ne peut pas être défini comme ça!
 
La solution de la HashTable (ou du vecteur, si tu es sûr d'avoir toujours le même traitement à faire sur TOUS les boutons..Quoiqu'il seront rangés dans l'ordre, mais bon...) me paraît être la seule envisageable...
 
A la limite, tu te fais une classe ButtonGroup
 
public class ButtonGroup extends Vector {
 
public ButtonGroup(Vector labels) {
    super();
    JButton but;
    for (int i=0; i<labels.size()-1;i++) {
         but = new JButton(labels.elementAt(i).toString());
         but.setActionCommand("perso"+i);
         addElement(but);
    }
}
 
public JButton getButton(int index) {
    if ((index >= 0) && (index < getSize())) {
        return (JButton) elementAt(index);
    } else {
         return null;
    }
}
 
public JButton getButton(String action) {
     
     JButton but;
     int i = 0;
     while (i < size()) {
          but = (JButton) elementAt(i);
          if (but.getActionCommand().equals(action)) {
              return but;
          }
     }
      return null;
}
 
 
Et bon, avec ça, tu devrais pouvoir faire ce que tu veux, non???
 
Bon, c'est pas sur que ça compile, par contre, c'est écrit un peu à la va vite! :D

Reply

Marsh Posté le 07-05-2002 à 08:45:37    

gfive a écrit a écrit :

JButton perso+i =  
 
Ca, ca marchera jamais!!!!




 
i'm'semblait bien... j'ai essayé de faire un System.out.println et je n'arrivais même pas à l'écrire...


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 08-05-2002 à 11:36:48    

Merci beaucoup les gars, je vais voir ce que je peux faire avec tout ca.


---------------
-Hassan Cehef --> C'est possible -Roberttripoux --> Les bons comptes font les bons amis
Reply

Sujets relatifs:

Leave a Replay

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