Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3142 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Creation de JButton avec une boucle for

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Creation de JButton avec une boucle for

n°694582
gniann
Posté le 07-04-2004 à 13:18:08  profilanswer
 

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
 

mood
Publicité
Posté le 07-04-2004 à 13:18:08  profilanswer
 

n°694586
noldor
Rockn'roll
Posté le 07-04-2004 à 13:21:44  profilanswer
 

fais un tableau


---------------
http://runnerstats.net
n°694587
gniann
Posté le 07-04-2004 à 13:22:53  profilanswer
 

OK tu peux me donner un exemple stp
merci

n°694588
noldor
Rockn'roll
Posté le 07-04-2004 à 13:23:50  profilanswer
 

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


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

---------------
http://runnerstats.net
n°694592
gniann
Posté le 07-04-2004 à 13:28:18  profilanswer
 

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

n°694608
voleurdeca​rottes
On peut cogner, chef ?
Posté le 07-04-2004 à 13:51:39  profilanswer
 

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é...

n°695172
gniann
Posté le 07-04-2004 à 21:30:16  profilanswer
 

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

n°699581
seabee
Posté le 14-04-2004 à 20:26:01  profilanswer
 

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
n°699603
benou
Posté le 14-04-2004 à 20:46:45  profilanswer
 

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.

n°699657
nraynaud
lol
Posté le 14-04-2004 à 22:01:11  profilanswer
 

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
mood
Publicité
Posté le 14-04-2004 à 22:01:11  profilanswer
 

n°699669
benou
Posté le 14-04-2004 à 22:15:15  profilanswer
 

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
n°699677
nraynaud
lol
Posté le 14-04-2004 à 22:26:09  profilanswer
 

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
n°699679
benou
Posté le 14-04-2004 à 22:29:50  profilanswer
 

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

n°699680
nraynaud
lol
Posté le 14-04-2004 à 22:33:13  profilanswer
 

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
n°699687
the real m​oins moins
Posté le 14-04-2004 à 22:47:42  profilanswer
 

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 ?
n°699690
nraynaud
lol
Posté le 14-04-2004 à 22:52:52  profilanswer
 

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
n°699694
the real m​oins moins
Posté le 14-04-2004 à 22:56:35  profilanswer
 

à 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 ?

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Creation de JButton avec une boucle for

 

Sujets relatifs
Pb programme de création d'IHMHELP ! création d'une mailing list à partir d'un site web ...?
Help!! [boucle avec select]Date création fichier
creation d une GUI a un JSCreation d'allias IIS avec Inno Setup
[SQL] aide pour la création d une requeteboucle while et if
Plus de sujets relatifs à : Creation de JButton avec une boucle for


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR