Avatar billede mummikiks Nybegynder
27. oktober 2005 - 11:24 Der er 2 kommentarer og
1 løsning

Popup menu ved højreklik

Hej Experter

Jeg skal anvende en popupmenu, når man højreklikker på et objekt. Jeg er lidt i tvivl om den helt rigtige måde at gøre det på...Skal man tilføje en listener til hver enkelt menupunkt eller skal man tilføje en listener til det hele, som så forspørger om det selectedIndex, hvor efter man evaulere på dem.

Håber nogle kan give et lille eksempel, som evt også gemmer nogle af menupunkterne.
Avatar billede mikkelbm Nybegynder
27. oktober 2005 - 22:18 #1
Et eksempel på hvordan det kan gøres med en JList. Ellers ved jeg ikke lige hvad du taler om, når du siger objekt :) ?

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

public class Popup extends JFrame implements ActionListener
{
    private JList list = new JList(new DefaultListModel());
    JPopupMenu popup;
   
    public Popup()
    {
        this.setSize(300, 300);
        this.getContentPane().add(list, BorderLayout.CENTER);

        for (int i = 0; i<10; i++)
        {
            ((DefaultListModel)list.getModel()).addElement("Test " + i);
        }
       
        buildMenu();
    }
   
    private void buildMenu()
    {
        popup = new JPopupMenu();
       
        JMenuItem menuItem = new JMenuItem("Menu 1");
        menuItem.addActionListener(this);
        popup.add(menuItem);
   
        MouseListener popupListener = new PopupListener();
        list.addMouseListener(popupListener);
    }
   
    public void actionPerformed (ActionEvent e)
    {
        JOptionPane.showMessageDialog(this, "Du har valgt: " + list.getSelectedValue());
    }
   
    private class PopupListener extends MouseAdapter
    {
        public void mousePressed(MouseEvent e)
        {
            maybeShowPopup(e);
        }
   
        public void mouseReleased(MouseEvent e)
        {
            maybeShowPopup(e);
        }
   
        private void maybeShowPopup(MouseEvent e)
        {
            if (e.isPopupTrigger())
            {
                int index = list.locationToIndex(e.getPoint());
                if (index >= 0)
                    list.setSelectedIndex(index);
                popup.show(e.getComponent(),  e.getX(), e.getY());
            }
        }
    }
   
    public static void main (String[] args)
    {
        new Popup().setVisible(true);
    }
}
Avatar billede mikkelbm Nybegynder
27. oktober 2005 - 22:19 #2
Avatar billede mikkelbm Nybegynder
28. oktober 2005 - 14:47 #3
Brugbart?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester