Bonjour,

voilà une chose bien inquiétante, dans l'application que je développe, il y a donc un JPanel (reagissant au DnD) et on peut droper dedans des objets (Materiel) qui sont en fait des JPanel aussi.
OnClick sur un Materiel, un JPopupMenu apparait et propose de 'delete' le Materiel.

Jusqu' ici tout va bien.

Mais onClick sur l'item delete, rien ne se passe ... Pourtant le code est bon ...

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
 
private void creerPopup() {
        monPopup = new JPopupMenu ();
        liaison = new JMenu("liaison to");
        delete = new JMenuItem ("delete");
        delete.addActionListener (new ActionListener () {
            public void actionPerformed (ActionEvent e) {
                afficheDialogue();
           }
        });
        proprietes = new JMenuItem ("properties");
        monPopup.add(liaison);
        monPopup.add(delete);
        monPopup.add(proprietes);
    }
Donc voilà, onClick le JPopupMenu apparait bien mais le actionPerformed ne fait rien (il ne rentre jamais dedans en fait).

J'ai trouvé une parade (laide), a savoir :
Faire en sorte que ma classe implements ActionListener,
puis remplacer:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
delete.addActionListener (new ActionListener () {
            public void actionPerformed (ActionEvent e) {
                afficheDialogue();
           }
        });
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
delete.addActionListener (this);
Et ensuite ajouter la methode dans la classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().compareTo("delete")==0) {
            afficheDialogue();   
        }
    }
C'est a n y rien comprendre. Bon au final ca marche, mais je trouve ca un peu laid et ne voit surtout pas quelle est la raison du non fonctionnement de la premiere facon ...

Serait ce possible que cela soit un bug de JRE ? Ou moi qui ai codé ca n'importe comment?

Merci de reflechir a la question