Creation de JButton avec une boucle for

Creation de JButton avec une boucle for - Java - Programmation

Marsh Posté le 07-04-2004 à 13:18:08    

Bonjour,
je souhaiterais savoir comment je pourrais creer des JButton avec une boucle pouvoir savoir quel bouton a ete cliqué...
 
car en faisant :
for(int i=1;i<10;i++){
add(new JButton("b"+i));
}
 
je n'arrive pas a recuperer le nom du bouton cliqué car je ne lui ai pas donné de nom...
donc ma question est comment faire pour declarer avec une boucle les boutons pour que ca donne dynamiquement quelque chose du genre :
 
JButton b1 = new JButton("b1" );
JButton b2 = new JButton("b2" );
 
pour que je fasse  
 
b1.addActionListener(this);
...
 
merci
 

Reply

Marsh Posté le 07-04-2004 à 13:18:08   

Reply

Marsh Posté le 07-04-2004 à 13:21:44    

fais un tableau


---------------
http://runnerstats.net
Reply

Marsh Posté le 07-04-2004 à 13:22:53    

OK tu peux me donner un exemple stp
merci

Reply

Marsh Posté le 07-04-2004 à 13:23:50    

Code :
  1. JButton[] myBtns = new JButton[10];


Message édité par noldor le 07-04-2004 à 13:24:01

---------------
http://runnerstats.net
Reply

Marsh Posté le 07-04-2004 à 13:28:18    

ok merci ;o)
je regarde ca ce soir...
et pour recuperer le bouton cliqué...??
encore merci

Reply

Marsh Posté le 07-04-2004 à 13:51:39    

Salut Gniann, toi aussi tu profites de tes vacances pour écrire un générateur d'IHM ? J'ai la même question que toi, comment récupérer le bouton cliqué...

Reply

Marsh Posté le 07-04-2004 à 21:30:16    

tu peux jouer avec setActionCommand et getActionCommand pour recuperer le bouton cliqué

Reply

Marsh Posté le 14-04-2004 à 20:26:01    

Ouai.
 
Ou autre méthode plus crade (peut être plus clair au début)
 

Code :
  1. JButton[] buttons = new JButton[NB_BUTTONS];
  2. for (int i = 0; i<NB_BUTTONS; i++) {
  3.   JButton jb = new JButton();
  4.   buttons[i] = jb;
  5.   add(jb);
  6.   jb.addActionListener(new ActionListener() {
  7.      public void actionPerformed(ActionEvent evt) {
  8.         // Bouzin du bouton i.
  9.      }
  10.   }
  11. }


Message édité par seabee le 14-04-2004 à 20:28:08
Reply

Marsh Posté le 14-04-2004 à 20:46:45    

Seabee a écrit :

Ou autre méthode plus crade (peut être plus clair au début)


le problème c'est qu'elle marchera ou sera difficilement utilisable car tu n'aura pas le droit d'accéder à i à l'intérieur du ActionListener (il faudrait que i soit final).
 
On peut garder l'idée du ActionListener par bouton, mais il faut dans ce cas déclarer une classe non-annonyme et lui passer en paramêtre du constructeur du actionlistener les paramêtres "spécifiques au bouton N" qui lui seront nécessaires.

Reply

Marsh Posté le 14-04-2004 à 22:01:11    

benou a écrit :


le problème c'est qu'elle marchera ou sera difficilement utilisable car tu n'aura pas le droit d'accéder à i à l'intérieur du ActionListener (il faudrait que i soit final).

c'est pas grave, si ?
sinon, une petite  
 

Code :
  1. for (...) {
  2.   final int j = i;
  3. ...
  4.   new ActionListener() {
  5.     // utilisation de j
  6.   }
  7. }


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-04-2004 à 22:01:11   

Reply

Marsh Posté le 14-04-2004 à 22:15:15    

nraynaud a écrit :

Code :
  1. for (...) {
  2.   final int j = i;
  3. ...
  4.   new ActionListener() {
  5.     // utilisation de j
  6.   }
  7. }




ha ouais, tiens ... ca marche ca ... j'aurais pas cru !  
 

Code :
  1. public class TestFinal {
  2.    public static void main (String[] args) {
  3.       A[] as = new A[10];
  4.       for (int i=0; i < as.length; i++) {
  5.          final int j = i;
  6.          as[i] = new A() {
  7.                public void f() {
  8.                   System.out.println(j);
  9.                }
  10.          };
  11.       }
  12.       for (int i=0; i < as.length; i++) {
  13.          as[i].f();
  14.       }     
  15.    }   
  16. }
  17. interface A {
  18.    public void f();
  19. }


compile et donne  

Citation :


0
1
2
3
4
5
6
7
8
9


Message édité par benou le 14-04-2004 à 22:16:54
Reply

Marsh Posté le 14-04-2004 à 22:26:09    

heu ... j'ai écrit ça sans penser un instant que ça ne puisse pas marcher, c'est mal ?
 
non par contre, pour rester dans l'axe : c'est super important le numéro du bouton ? déjà on peut leur donner des noms (avec getName() et setName()) pour l'utilisateur, d'autre part, dans le code du handler, on a besoin absolument du numéro ? parce que mettre 5-6 boutons qui font tous une action super-proche, l'utilisateur risque de gueuler. Si on veut mettre une série de boutons alignés avec chacun un comportement propre, alors, comme signalé plus haut, la classe Action est là pour ça (puis on aura l'icône, le tooltip et le undo pour le même prix).


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-04-2004 à 22:29:50    

nraynaud a écrit :

heu ... j'ai écrit ça sans penser un instant que ça ne puisse pas marcher, c'est mal ?


je vois pas pourquoi ca le serait, t'es simplement immensément plus intelligent que moi

Reply

Marsh Posté le 14-04-2004 à 22:33:13    

benou a écrit :

t'es simplement immensément plus intelligent que moi

on va s'arrêter à : "tu t'es tapé la doc d'un bon paquet de langage, et donc tu fais des rapprochements de sémantique entre des langages à syntaxe lointaine"


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-04-2004 à 22:47:42    

enfin, le final int j = i, faut quand meme pas perdre de vue que c'est un type natif et pas un objet/reference...


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

Marsh Posté le 14-04-2004 à 22:52:52    

the real moins moins a écrit :

enfin, le final int j = i, faut quand meme pas perdre de vue que c'est un type natif et pas un objet/reference...

et tu crois que ça change quelquechose ? j'ai la sensation que non. L'objet au bout de la référence peut changer son état interne au cours du temps, mais c'est le même (==).


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-04-2004 à 22:56:35    

à vrai dire j'ai pas trop suivi, et je n'ai donc pas capté l'interet du final... je vais relire :o


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

Sujets relatifs:

Leave a Replay

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