Ajouter un JPopupMenu sur un JMenu

Eracles70 Messages postés 2 Date d'inscription dimanche 7 mai 2006 Statut Membre Dernière intervention 2 mai 2011 - 2 mai 2011 à 15:54
 Utilisateur anonyme - 3 mai 2011 à 23:02
Bonjour à toutes et à tous, je viens vers vous pour essayer de trouver une sollution à un problème que je n'arrive pas à résoudre depuis plusieurs jours ( voire semaines )

Dans mon application, j'ai un JMenu ( dans une JMenuBar ) qui contient differents JMenu et JMenuItem.
Mon objectif est d'ajouter un menu contextuel ( JPopupMenu ) sur les JMenu lors d'un clic droit.

Voici mon menu contextuel :
 
public class MenuContextuel extends JPopupMenu implements ActionListener{
 
public MenuContextuel_JMenu() {
JMenuItem menuItem;
menuItem = new JMenuItem("Ouvrir");
menuItem.setActionCommand("open");
menuItem.addActionListener(this);
add(menuItem);
menuItem = new JMenuItem("Ajouter un répertoire"); 
menuItem.setActionCommand("add");
menuItem.addActionListener(this);
add(menuItem);
menuItem = new JMenuItem("Supprimer");
menuItem.setActionCommand("delete");
menuItem.addActionListener(this);
add(menuItem);
}	
 
public void actionPerformed(ActionEvent e) {
           // à faire
}


Je l'appelle sur mon JMenu comme suit :

if (SwingUtilities.isRightMouseButton(e)){
JPopupMenu pop = new MenuContextuel();
pop.show(e.getComponent(),e.getX(), e.getY());
}


Il apparait bien, mais dès que je rentre dans le menu contextuel, le composant JMenu se ferme, comment puis je éviter cela ?

Merci de votre aide éventuelle

3 réponses

Utilisateur anonyme
2 mai 2011 à 19:09
Ton deuxième bout de code est utilisé où ?
Quelle est le différence entre new MenuContextuel() et new MenuContextuel_JMenu() ?

-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
0
Eracles70 Messages postés 2 Date d'inscription dimanche 7 mai 2006 Statut Membre Dernière intervention 2 mai 2011
2 mai 2011 à 19:41
Autant pour moi c'est new MenuContextuel() et non pas new MenuContextuel_JMenu(), une correction que j'ai oublié.

pour la seconde partie elle est utilisée sur un JMenu
0
Utilisateur anonyme
3 mai 2011 à 23:02
J'ai une idée mais c'est de la bricole.
Et si quand tu rentres dans le menu contextuel tu donnais le focus à ton JMenu ? Cela pourrait le faire rester affichée...
Mais bon je pense qu'il y a 85 % de chances que ça foire :/


--
Pylouq (actuellement jongleur de clavier AZERTY et de clavier QWERTZ)
0
Rejoignez-nous