Java - JPopupMenu


PopupMenu se može dinamički pojaviti na određenoj poziciji unutar komponente. Nasljeđuje klasu JComponent. Pogledajmo deklaraciju za klasu javax.swing.JPopupMenu:

public class JPopupMenu extends JComponent implements Accessible, MenuElement  


Najčešće korišteni konstruktori

Konstruktor Opis
JPopupMenu() Konstruiše JPopupMenu bez "pozivača (invoker)".
JPopupMenu(String label) Konstruiše JPopupMenu sa navedenim naslovom.


Primjer Java JPopupMenu

import javax.swing.*;  
import java.awt.event.*;  
import static javax.swing.WindowConstants.EXIT_ON_CLOSE;

class Main  
{  
    Main(){  
        // Kriranje naziva forme i PopupMenu-a
        final JFrame f= new JFrame("Primjer PopupMenu");  
        final JPopupMenu popupmenu = new JPopupMenu("Edit"); 
        
        // Dodavanje stavki menija
        JMenuItem cut = new JMenuItem("Cut");  
        JMenuItem copy = new JMenuItem("Copy");  
        JMenuItem paste = new JMenuItem("Paste");  
        
        // Dodavanje komponenti u meni
        popupmenu.add(cut); 
        popupmenu.add(copy); 
        popupmenu.add(paste); 
        
        // Konstruktor MouseAdapter() omogućava pokretanje menija klikom miša
        f.addMouseListener(new MouseAdapter() {  
            public void mouseClicked(MouseEvent e) {              
                popupmenu.show(f , e.getX(), e.getY());  
            }                 
         });  
        
        // Dodavanje komponenti u Formu i podešavanje veličine Forme
        f.add(popupmenu);   
        f.setSize(300,300);  
        f.setLayout(null);  
        f.setVisible(true);
        f.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }  
    // Klasa Main
    public static void main(String args[])  
    {  
        new Main();  
    }
}

Prikaz koda iz gornjeg primjera izgledaće ovako:



Primjer Java JPopupMenu sa MouseListener i ActionListener

import javax.swing.*;  
import java.awt.event.*;  
import static javax.swing.WindowConstants.EXIT_ON_CLOSE;

class Main   
{  
     Main(){  
        // Kreiranje Forme i Label-a PopupMenu-a
        final JFrame f= new JFrame("Primjer PopupMenu");  
        final JLabel label = new JLabel();
        
        // Postavljanje horizontalnog poravnanja menija
        label.setHorizontalAlignment(JLabel.CENTER);  
        label.setSize(400,100);  
        
        // Dodavanje stavki menija
        final JPopupMenu popupmenu = new JPopupMenu("Edit");   
        JMenuItem cut = new JMenuItem("Cut");  
        JMenuItem copy = new JMenuItem("Copy");  
        JMenuItem paste = new JMenuItem("Paste"); 
        
        // Dodavanje komponenti u meni
        popupmenu.add(cut); 
        popupmenu.add(copy); 
        popupmenu.add(paste); 
         
        // Konstruktor MouseAdapter() omogućava pokretanje menija klikom miša 
        f.addMouseListener(new MouseAdapter() {  
            public void mouseClicked(MouseEvent e) {              
                popupmenu.show(f , e.getX(), e.getY());  
            }                 
        });  
        // Konstruktor ActionListener() omogućava prikaz kliknute stavke meija
        cut.addActionListener(new ActionListener(){  
         public void actionPerformed(ActionEvent e) {              
             label.setText("Kliknuta stavka cut.");  
            }  
        });  
        copy.addActionListener(new ActionListener(){  
            public void actionPerformed(ActionEvent e) {              
                label.setText("Kliknuta stavka copy.");  
            }  
        });  
        paste.addActionListener(new ActionListener(){  
            public void actionPerformed(ActionEvent e) {              
                label.setText("Kliknuta stavka paste.");  
            }  
        });
        
        // Dodavanje komponenti u Formu i podešavanje veličine Forme
        f.add(label); f.add(popupmenu);   
        f.setSize(400,400);  
        f.setLayout(null);  
        f.setVisible(true);  
        f.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }  
    // Klasa Main
    public static void main(String args[])  
    {  
        new Main();  
    }  
}

Prikaz koda iz gornjeg primjera izgledaće ovako: