Ok merci Sanguko
Le GetComponent du Mouselistener marche si je donne un nom à mes boutons, du type
bouton.setName(String.valueOf(indexBut));
Il me renvoie bien la valeur du bouton correspondant quand je clique sur le bouton (cf le code ci-dessous):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
private String[] Texte={"OK","CANCEL","MENU","NEXT","BACK"};
private JPanel Panel=nexwJPanel();
private int i;
for (i=0;i<4;i++){
JButton bouton=new JButton(Texte[i]);
bouton.setName(String.valueOf(indexBut));
bouton.addMouseListener(new MyMouseListener());
Panel.add(bouton);
}
private class MonMouseListener implements MouseListener{
public void mouseEntered(MouseEvent arg0) {
System.out.println(arg0.getComponent().getName());
} |
Le souci, c'est qu'en voulant trop simplifier mon pb, j'en ai perdu les elements clefs qui composent ma classe.
En fait, j'ai une liste de fiche (classes qui contiennent un certain nombre de parametres) et c'est l'image de chacune des fiches que je fais apparaitre dans ma boucle (et non le Texte[i] comme je l'avais noté dans ma vesrion simplifiée
).
Dans ma boucle "for i", si je demande d'afficher l'etat de chaque fiche (dont l'indice correspond au nouveau bouton instancié), c'est OK.
En revanche, si je lui demande de m'afficher l'etat de la fiche au moment de l'evenement (MouseClicked), maliste.get(index).getetat() me renvoie "null" ...
Ou est l'erreur ?? (pourtant ma liste est en entree de mon constructeur Visionneuse)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
private List<Fiche> maliste;
Visionneuse(List<FicheCD> maliste){
for (int i=0;i<maliste.size();i++){
PathImage="./IMAGES/"+maliste.get(i).getnomimagette();
System.out.println(maliste.get(i).getetat()); // sortie de la variable etat --> OK
JButton bouton=new JButton(new ImageIcon(PathImage));
bouton.setName(String.valueOf(indexBut));
bouton.addMouseListener(new MonMouseListener());
Panel.add(bouton);
}
}
private class MonMouseListener implements MouseListener{
public void mouseClicked(MouseEvent Mevt){
MonIndexChoix=Mevt.getComponent().getName(); // Valeur OK
System.out.println(maliste.get(MonIndexChoix).getetat()); // VALEUR null !!
} |
Partager