Action sur des boutons crées dynamiquement

oliver2202 Messages postés 1 Date d'inscription mardi 4 avril 2006 Statut Membre Dernière intervention 26 juin 2007 - 26 juin 2007 à 10:09
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 26 juin 2007 à 10:17
bonjour à tous,

voila je souhaiterai (comme mon titre le dit) effectuer des actions sur des bouton créer dynamiquement, pour cela je crée un tableau de bouton
<!-- BEGIN TEMPLATE: bbcode_code -->

final Button[] boutonp = new Button[4];
int j=0;
...
boutonp[j] =new Button(composite[j], SWT.CENTER);
boutonp[j].setFont(font);
boutonp[j].setText(" + ");
 
et qd je fais les actions:

boutonp[j].addListener(SWT.Selection, new Listener(){
      publicvoid handleEvent(Event event){
    j++;
    System.out.println(" bouton "+j+" créer");
    filtre[j] = new Composite_Filtre();
  filtre[j].createCompoFiltre(composite_zoneW, 1);
    composite[j] = new Composite(composite_zoneW, SWT.CENTER);
  GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
  composite[j].setLayoutData(gridData);
  GridLayout griddLayout = new GridLayout();
  griddLayout.numColumns = 2;
  composite[j].setLayout(griddLayout);
  composite[j].setBackground(couleur);
  boutonp[j] =new Button(composite[j], SWT.CENTER);
  boutonp[j].setFont(font);
  boutonp[j].setText(" + ");
....

le truc c'est que l'action ne se fait que quand je clique sur le premier bouton (où j=0) et pas sur les autres ....

merci de vos réponses.<!-- / message -->
 

1 réponse

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
26 juin 2007 à 10:17
Je te conseille plutôt que de créer x actionListener, d'en créer qu'un seul. Tu définit les name de tes boutons pour les différencier, et dans l'actionListener tu teste le nom du bouton ayant déclancher l'action. Ca donne :

ActionListener action = new ActionListener {
    public void actionPerformed(ActionEvent e) {
       String name = ((JComponent) e.getSource()).getName();
       if (name.equals("toto")) {
          // c'est le bouton toto qui a déclencher l'action
       }
    }
};

JButton btnToto = new JButton();
btnToto.setName("toto");
btnToto.addActionListener(action);
0