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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.