JPopupMenu issue d'une HashMap

Fermé
Cotton - Modifié par Cotton le 19/11/2015 à 20:04
 Cotton - 19 nov. 2015 à 23:26
Bonjour,

J'aimerai créer un menu type JPopupMenu avec, comme contenu, des JMenuItem. Jusque là, rien de compliquer.

Mais la particularité c'est que je veux créer des JMenuItem à partir des éléments d'une HashMap comportant des objet Item.


       JPopupMenu vPopupMenu = new JPopupMenu();
        vButtonBack.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent e)
            {
                Set<String> keys = (aEngine.getPlayer().getCurrentRoom().getItemsList()).keySet();
                
                for(String vItem : keys)
                {
                    vPopupMenu.add(new JMenuItem(vItem));
                }
                
                vPopupMenu.show(vButtonBack, vButtonBack.getBounds().x + 35, vButtonBack.getBounds().y + 35);
        }
        });


La compilation s'effectue sans erreur. Néanmoins, lorsque je clique sur mon bouton vButtonBack, le menu ne s'affiche pas.

Je ne vois pas d'où vient l'erreur... Pouvez vous

1 réponse

Bon, pour ce point, j'ai réussi.

       vButtonTake.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent e)
            {
                JPopupMenu vPopupMenu = new JPopupMenu();
                Set<String> keys = (aEngine.getPlayer().getCurrentRoom().getItemsList()).keySet();
                
                if((aEngine.getPlayer().getCurrentRoom().getItemsList()).isEmpty())
                {
                    vPopupMenu.add(new JMenuItem("Cette pièce ne possède pas d'objet..."));
                    vPopupMenu.show(vButtonTake, vButtonTake.getBounds().x + 35, vButtonTake.getBounds().y + 35);
                }
                else
                {
                    for(String vItem : keys)
                    {
                        vPopupMenu.add(new JMenuItem(vItem));
                    }
                    
                    vPopupMenu.show(vButtonTake, vButtonTake.getBounds().x + 35, vButtonTake.getBounds().y + 35);
                }
                
        }
        });


Mais maintenant je veux qu'a chaque fois que je clique sur un des JMenuItem, cela exécute une méthode.
0