Listener sur une liste de JButton

Listener sur une liste de JButton - Java - Programmation

Marsh Posté le 30-05-2004 à 18:42:50    

Bonjour, dans mon programme, je dois ajouter un listener à un bouton qui est répété plusieurs fois (listing de données).
 
Le listing de données provient d'un Vecteur, à chaque entrée lue, un bouton DELETE y est ajouté.
 
Le nombre d'Objets (d'entrées) qu'il peut y avoir dans le Vecteur peut varier.
 
Mon problème est d'ajouter un listener sur ces boutons DELETE qui, en fonction du boutons sur lequel l'utilisateur va cliquer, supprimera l'objet auquel il est associé dans le Vecteur.
 
J'ai bien réussi a créer un Listener de sorte à ce que si l'on clique sur le bouton DELETE (n'importe lequel) il effectue une action mais ce que je n'arrive pas à faire, c'est récupérer l'information concernant le bouton qui a été cliqué (à quel objet dans le vecteur était il associé ?).
 
Voila le code que j'ai :
 

Code :
  1. for(int i = 0; i < answers.size() ; i++)
  2.         {
  3.           gbc.gridy++;
  4.           Panel_Quest.add(new JLabel(i+1 + ". " ), gbc);
  5.           ButtonList Btn_List = new ButtonList("Delete", i);
  6.          
  7. [....]
  8.           Panel_Quest.add(Btn_List, gbc);
  9.           Btn_List.removeActionListener(this);
  10.           Btn_List.setActionCommand("DELETE_ANSWER" );
  11.           Btn_List.addActionListener(this);
  12.           gbc.gridx = 0;
  13.         }


 
Le bouton est issu d'une classe ButtonList qui me permet d'associer un "ID" à chacun d'eux, cet ID correspond en fait à mon numéro d'itération dans la boucle for du dessus. Je ne sais pas si c'est la bonne méthode à mettre en oeuvre mais c'est la seule que j'ai réussi à trouver :( Comme je l'ai notifié plus haut, je n'arrive pas à récupérer cet ID associé au bouton cliqué une fois arrivé dans l'action à effectuer.
 

Code :
  1. package common.components;
  2. import javax.swing.*;
  3. public class ButtonList extends JButton
  4. {
  5.   private int ID;
  6.   private String button_text;
  7.  
  8.   public ButtonList(String btn_name, int btn_id)
  9.   {
  10.     button_text = new String();
  11.    
  12.     SetID(btn_id);
  13.     SetName(btn_name);
  14.     super.setText(button_text);
  15.   }
  16.  
  17.   public void SetID(int btn_id)
  18.   {
  19.     ID = btn_id;
  20.   }
  21.  
  22.   public void SetName(String btn_name)
  23.   {
  24.     button_text = btn_name;
  25.   }
  26.  
  27.   public int GetID()
  28.   {
  29.     return ID;
  30.   }
  31.  
  32.   public String GetText()
  33.   {
  34.     return button_text;
  35.   }
  36. }


 
Si qqun avait une idée concernant la possibilité de récupérer plus tard l'ID ? Je suis preneur ;)
Peut être même que toute la méthode mise en oeuvre est a changer ... Je suis a l'écoute de toutes les solutions.


Message édité par JBs le 30-05-2004 à 18:50:39
Reply

Marsh Posté le 30-05-2004 à 18:42:50   

Reply

Marsh Posté le 31-05-2004 à 01:40:30    

Gestionnaire d'evenement du bouton :

Btn_List.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent evt)
 { cliquer(evt);
 }
});


 
Fonction récuperant le clic :

public void cliquer(ActionEvent evt)
{ int ID = ((ButtonList) evt.getSource()).GetID();
 [ton code]
}


 
Voili voilou, ID dans la méthode cliquer possède l'id du bouton cliqué.  :)

Reply

Marsh Posté le 31-05-2004 à 14:55:50    

merci bcp :jap:

Reply

Marsh Posté le 31-05-2004 à 15:02:22    

met toi aux conventions java...
 
btn_name ==> buttonName : plus explicite, et plus standard...si tu suis ces conventions et que par ex je dois reprendre ton code, je sais qu'en faisant un getButtonName() je suis certain d'avoir qqc...ca permet de pas se taper la doc de l'api tt les 5 sec pour voir le nom que t'a donné à tes variables...
 
en ce moment je maintiens du code pourri, les variables sont préfixées selon leur origine, et selon leur type, genre _strName, et des fois les getters et setters ont pas les même nom...
 
c horrible à maintenir, sans eclipse je me serais déjà pendu...


---------------
Jubi Photos : Flickr - 500px
Reply

Sujets relatifs:

Leave a Replay

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