Comment creer un jpopupmenu

hlimaiem Messages postés 106 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 17 janvier 2007 - 25 août 2006 à 02:33
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 26 août 2006 à 17:02
Limaiem heykel
Bonjour,
Je veux ajouter dans ma jliste un JPopupMenu, mais je sait pas la syntaxe exacte pour ca creation et le listenner necessaire pour que le jpopupmenu s'afficher uniquement l'orsque je clique sur une ligne de ma jliste.
Merci de me fournir un petit exemple pour commencer.

13 réponses

kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020
25 août 2006 à 07:52
voila un exemple

import javax.swing.JList;

import javax.swing.JMenuItem;

import javax.swing.JPopupMenu;

import javax.swing.SwingUtilities;

class DiapoControl extends DiapoVue{

private int courant = 0;

private Modele modele;

private final JPopupMenu popup = new JPopupMenu();

private JMenuItem itemBox1, itemBox2, itemBox3, itemBox4, itemBox5;

DiapoControl() {

itemBox1 = new JMenuItem("copier");

popup.add(itemBox1);

itemBox1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

courant=modele.courant;

modele.copier();

}

});

itemBox2 = new JMenuItem("coller");

popup.add(itemBox2);

itemBox2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

courant=modele.courant;

modele.coller();

}

});

addMouseListener(new MouseAdapter(){

public void mousePressed(MouseEvent e) {

if (SwingUtilities.isRightMouseButton(e)) {

popup.show(e.getComponent(), e.getX(), e.getY());

}

}

});

}

 
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
25 août 2006 à 09:46
Salut,

en 1.5 tu peux ajouter un jpopupmenu à tout ce qui herite de jcomponent jliste comprise avec cette methode


setComponentPopupMenu
public void setComponentPopupMenu(JPopupMenu popup)

Sets the
JPopupMenu
for this
JComponent
.
The UI is responsible for registering bindings and adding the necessary
listeners such that the
JPopupMenu
will be shown at
the appropriate time. When the
JPopupMenu
is shown
depends upon the look and feel: some may show it on a mouse event,
some may enable a key binding.

If
popup
is null, and
getInheritsPopupMenu

returns true, then
getComponentPopupMenu
will be delegated
to the parent. This provides for a way to make all child components
inherit the popupmenu of the parent.

This is a bound property.

<dd><dl> * Parameters: : <dd>
popup
- - the popup that will be assigned to this component
may be null * Since: : <dd>1.5 * See Also: : <dd>
getComponentPopupMenu()

</dd></dl>

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
hlimaiem Messages postés 106 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 17 janvier 2007
25 août 2006 à 15:44
Limaiem heykel
bon merci pour votre reponse,
J'ai essayer ce code mais j'ai pas pu associer mon jpopupmenu a ma jlist, le menu fonctione hors ma jlist mais pas ds ma jlist, voici mon code

 private final JPopupMenu popup = new JPopupMenu();
   private JMenuItem itemBox1, itemBox2, itemBox3, itemBox4, itemBox5;
   private int courant = 0;

 itemBox1 = new JMenuItem("copier");

popup.add(itemBox1);

itemBox1.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {

       test_clic(e);
    }

});

itemBox2 = new JMenuItem("coller");

popup.add(itemBox2);

itemBox2.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {

       test_clic(e);
    }

});

addMouseListener(new MouseAdapter(){

    public void mousePressed(MouseEvent e) {

        if (SwingUtilities.isRightMouseButton(e)) {

            popup.show(jPanel2, e.getX(), e.getY());

        }

    }

});
Merci de me fournir  les modification necessaire pour que mon popup apprait ds ma jlist
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
25 août 2006 à 15:47
Salut,


rmeplace jPanel2 par le nom de ta JList


popup.show(maJList, e.getX(), e.getY());

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
25 août 2006 à 15:49
et le listener retache le a la jlist aussi

maJList.addMouseListener(new MouseAdapter(){

    public void mousePressed(MouseEvent e) {

        if (SwingUtilities.isRightMouseButton(e)) {

             popup.show(maJList, e.getX(), e.getY());

        }


    }

});

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
25 août 2006 à 15:53
Sinon pour le jdk 1.5 :


private final JPopupMenu popup = new JPopupMenu();

private JMenuItem itemBox1, itemBox2, itemBox3, itemBox4, itemBox5;


itemBox1 = new JMenuItem("copier");

popup.add(itemBox1);

maJList.setComponentPopupMenu(popup);

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
hlimaiem Messages postés 106 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 17 janvier 2007
26 août 2006 à 04:38
Limaiem heykel
Merci bq votre code fonctionne a merveille.
Je voudrait savoir comment faire pour que l'orsque je clique avec le bouton droit pour faire apparaitre mon jpopupmenu je  selectionne la ligne viser par le curseur, d'une autre facon : comment permettre la selection avec le bouton droit de ma souris en meme temp que le jpopupmenu apparait.
Merci
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 août 2006 à 13:42
Salut,

en regardant mieux le code de [auteurdetail.aspx?ID=16895 kaloway]tu aurais trouvé vite fait :
SwingUtilities.isRightMouseButton(MouseEvent e)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
hlimaiem Messages postés 106 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 17 janvier 2007
26 août 2006 à 14:34
Limaiem heykel
Justement j'ai exactement suivi  le code de kaloway ce qui fait que : le popupmenu apprait dans la jliste (clic droit) mais l'orsque je clique sur une ligne de ma liste par le bouton droit elle n'est pas selectionner et le popupmenu apparait.
Ce que je veu faire et l'orsque je pointe sur une ligne de ma liste et je clique sur le  bouton droit elle est selectioner et le popupmenu apparait.
Voici mon code pour en verifier mais je doit selectionez une ligne avec le bouton  gauche apres cliquer avec le bouton droit pour faire apparaitre le popupmenu relatif.
Merci pour votre aide
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 août 2006 à 15:37
Salut,

ouiais et le code?

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
hlimaiem Messages postés 106 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 17 janvier 2007
26 août 2006 à 16:03
Limaiem heykel
Je m'excuse j'ai oublier de vous passez le code. le voici

private final static JPopupMenu popup = new JPopupMenu();
   private static JMenuItem itemBox1, itemBox2, itemBox3, itemBox4, itemBox5;

public static void menuPop(){
    itemBox1 = new JMenuItem("Delete Link");
    popup.add(itemBox1);
    itemBox1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
       test_clic(e);
    }});
   itemBox2 = new JMenuItem("test");
   popup.add(itemBox2);
   itemBox2.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
       test_clic(e);
    }});

  desc.addMouseListener(new MouseAdapter(){
    public void mousePressed(MouseEvent e) {
        if (SwingUtilities.isRightMouseButton(e)) {
             popup.show(desc, e.getX(), e.getY());
        }

    }
});

  }
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 août 2006 à 17:00
Salut,

voici un exemple de ce que tu pourrais faire:

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;

public class Test extends JFrame implements ActionListener, MouseListener {
    private static final long    serialVersionUID    = 1L;
    private JPopupMenu            popup                = null;
    private JMenuItem            itemBox1            = null;
    private JMenuItem            itemBox2            = null;
    private JList                list                = null;
   
   
    public static void main(String [] args){
        new Test().setVisible(true);
    }
   
    public Test(){
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(new Dimension(300, 300));
        setLocationRelativeTo(null);
        setContentPane(new JScrollPane(getList()));
    }
   
    public JMenuItem getItemBox1(){
        if(itemBox1 == null){
            itemBox1 = new JMenuItem();
            itemBox1.setText("Delete Link");
            itemBox1.addActionListener(this);
        }
        return itemBox1;
    }
   
    public JMenuItem getItemBox2(){
        if(itemBox2 == null){
            itemBox2 = new JMenuItem();
            itemBox2.setText("test");
            itemBox2.addActionListener(this);
        }
        return itemBox2;
    }
   
    public JPopupMenu getPopupMenu(){
        if(popup == null){
            popup = new JPopupMenu();
            popup.add(getItemBox1());
            popup.add(getItemBox2());
        }
        return popup;
    }
   
    public JList getList(){
        if(list == null){
            list = new JList();
            DefaultListModel model = new DefaultListModel();
            for(int i = 0; i < 10; i++)
                model.addElement("Test" + i);
            list.setModel(model);
            list.addMouseListener(this);
        }
        return list;
    }
   
    public void actionPerformed(ActionEvent e) {
        if(e.getSource().equals(getItemBox1())){
            System.err.println("ItemBox1 = " + getList().getSelectedValue());
            getList().clearSelection();
        }else if(e.getSource().equals(getItemBox2())){
            System.err.println("ItemBox2 = " + getList().getSelectedValue());
            getList().clearSelection();
        }
    }

    public void mouseClicked(MouseEvent e) {
        if(e.getSource().equals(getList())){
            Object selection = getList().getSelectedValue();
            System.out.println(selection);
            if(selection != null){
                if (SwingUtilities.isRightMouseButton(e)) {
                     getPopupMenu().show(getList(), e.getX(), e.getY());
                }
            }
           
        }
       
    }

    public void mouseEntered(MouseEvent e) { }
    public void mouseExited(MouseEvent e) { }
    public void mousePressed(MouseEvent e) { }
    public void mouseReleased(MouseEvent e) { }

}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 août 2006 à 17:02
Oui j'oublié oublie les static a tout va c'est plus une cause d'erreur qu'autre chose de plus le static n'est a utiliser que si l'on à vraiment pas le choix ou que l'on veut partager un meme comportement entre plusieurs instance d'un meme objet

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
Rejoignez-nous