JPopupMenu sur plusieur JPanel
Bonjour, j'ai besoin de votre aide après avoir cherché pas mal de temps.
Mon programme créer plusieurs JPanel à différent endroit.
Je voudrai que chaque JPanel soit associé un JPopupMenu.
Le problème c'est que lors de ma boucle for qui créer les JPanel je leur associe tous ce qui faut et quand je fait la méthode show :
Code:
Clic_droit.show(matiere, event.getX(), event.getY());
La JPopupMenu n'est présente que sur le dernier JPanel (matiere), et non sur tous.
J'ai alors essayer de créer une ArrayList de JPanel :
Code:
Clic_droit.show(matiere.get(i), event.getX(), event.getY());
Mais la il me dit que i doit etre de type final.
La je ne voit plus comment faire.
Voici mon code qui instancie les JPanel :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| for(int i=0;i<planning.arrayListPlanning[jour].size();i++)
{
//autre
JPanel matiere1 = new JPanel(new BorderLayout());
String horaire = Donnees.heureDebut[planning.getReservation(jour, i).getHeureDebut()]+":"+Donnees.minuteDebut[planning.getReservation(jour, i).getMinuteDebut()];
horaire += " - "+Donnees.heureFin[planning.getReservation(jour, i).getHeureFin()]+":"+Donnees.minuteFin[planning.getReservation(jour, i).getMinuteFin()];
JLabel trancheHoraire = new JLabel(horaire);
matiere1.add(trancheHoraire,BorderLayout.NORTH);
//alignement du texte dans les JLabel
trancheHoraire.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
JLabel trancheHoraire2 = new JLabel(planning.getReservation(jour, i).getNomMatiere());
matiere1.add(trancheHoraire2,BorderLayout.SOUTH);
trancheHoraire2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
//Couleur Bleu
matiere1.setBackground(new Color(51,204,255));
matiere1.setOpaque(true);
int debutJLabel = (planning.getReservation(jour, i).getHeureDebut()*4+1)+planning.getReservation(jour, i).getMinuteDebut();
int finJLabel = (planning.getReservation(jour, i).getHeureFin()*4+1)+planning.getReservation(jour, i).getMinuteFin()+1;
matiere.add(matiere1);
ajouteComposant(matiere.get(i), debutJLabel, planning.getReservation(jour, i).getIndexSalle()+2, finJLabel-debutJLabel);
matiere.get(i).addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent event){
if(event.isPopupTrigger()) {
police_4.add(lucida_grande);
police_4.add(lucida_petite);
Modifier_police.add(police_1);
Modifier_police.add(police_2);
Modifier_police.add(police_3);
Modifier_police.add(police_4);
Clic_droit.get(i).add(Tester);
Clic_droit.get(i).add(Modifier_police);
//La méthode qui va afficher le menu
Clic_droit.get(i).show(matiere.get(i), event.getX(), event.getY());
}
}
});
} |
Merci de votre aide.