Pop up menu

monpseudonom Messages postés 38 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 24 février 2010 - 30 mars 2008 à 21:42
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 - 30 mars 2008 à 22:59
Salut.
Je veux réaliser un menu contextuel en java.c'est à dire lorsque je clique sur le boutton droit de la souris,le menu contextuel s'affiche.Pour cela,j'ai écrit c'est deux classes:
1)
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;

public class menuContextuel extends JPanel implements MouseMotionListener, MouseListener {

public JLabel l=new JLabel("label");

public menuContextuel() {
addMouseListener(this);
addMouseMotionListener(this);

}

public void mouseDragged(MouseEvent e) {

}

public void mouseMoved(MouseEvent e) {
}

public void mouseClicked(MouseEvent e) {

JPopupMenu jPopupMenu1 = new JPopupMenu();
jPopupMenu1.add(new JMenuItem("aa"));
jPopupMenu1.add(new JMenuItem("bb"));
jPopupMenu1.add(new JMenuItem("cc"));
jPopupMenu1.addSeparator();
jPopupMenu1.add(new JMenuItem("dd"));
jPopupMenu1.show(this, e.getX(),e.getY());

}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {

}

public void mouseReleased(MouseEvent e) {
}

}

2)
import javax.swing.JFrame;

public class Frame extends JFrame {

public Frame() {
super("title");
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().add("Center", new menuContextuel());
pack();
}

public static void main(String[] args) {
Frame frame = new Frame();
frame.setVisible(true);
}
}

Le probleme c'est que le menu contextuel s'affiche si je clique sur le boutton droit de la souris et meme si je clique avec le boutton gauche de la souris.
Pour cela j'ai modifié la méthode mouseClicked de la façon suivante:

public void mouseClicked(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON2)
{
JPopupMenu jPopupMenu1 = new JPopupMenu();
jPopupMenu1.add(new JMenuItem("aa"));
jPopupMenu1.add(new JMenuItem("bb"));
jPopupMenu1.add(new JMenuItem("cc"));
jPopupMenu1.addSeparator();
jPopupMenu1.add(new JMenuItem("dd"));
jPopupMenu1.show(this, e.getX(),e.getY());
}

}

Mais le menu contextuel n'est pas affiché que se soit je clique sur le boutton droit ou qauche de la souris.
Quel est le probleme?
Merci pour votre aide.

<!-- / message -->

1 réponse

cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
30 mars 2008 à 22:59
Salut,

voici un exemple sur les menus contextuels :

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Fenetre extends JFrame {
    private JPopupMenu menu = new JPopupMenu("Fichier");
    private JMenuItem menu_item1 = new JMenuItem("Commande1");
    private JMenuItem menu_item2 = new JMenuItem("Commande2");
   
    public Fenetre() {
        menu.add(menu_item1);
        menu.add(menu_item2);
       
        this.setPreferredSize(new Dimension(300, 200));
        this.pack();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
       
        final Fenetre f = this;
        this.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if(SwingUtilities.isRightMouseButton(e))
                    menu.show(f, e.getXOnScreen(), e.getYOnScreen());
            }
        });
    }
   
    public static void main(String[] args) {
        Fenetre f = new Fenetre();
       
    }
}
0
Rejoignez-nous