Java Swing | Popup and PopupFactory with examples

Popup and PopupFactory are a part of the Java Swing library. Popups are used when we want to display to the user a Component on the top of all the other Components in that particular containment hierarchy. PopupFactory is the class that is used to create popups. Popups have a very small life cycle, and generally are lightweight components having limited sub-components.

Constructor for the class are :

  1. PopupFactory(): creates an object for popup factory

Commonly used methods:



method explanantion
getPopup(Component o, Component c, int x, int y) Creates a Popup for the Component o containing the Component c at a location x, y on the owner component.
hide() Hides and disposes of the Popup.
show() Makes the Popup visible.

Below programs will illustrate the use of a popup:

  1. Java Program to create a popup and display it on a parent frame: We create a popup p by creating a popup factory and using the function getpopup() which returns a popup. We add this popup to a frame f titled “pop” we will create a label and add t to a container panel p2 and set the background of panel p2 using setBackground() function. We will add the container panel p2 to the popup. We will also create a button b titled “click” added with an action listener and displays the popup when the button is pressed. The button b is added to a panel and the panel is added to the frame. Frame is set to the size 400,400 using setSize(400,400). Finally, the frame is displayed using show() function.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Java Program to create a popup and display
    // it on a parent frame
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    class pop extends JFrame implements ActionListener {
        // popup
        Popup p;
      
        // constructor
        pop()
        {
            // create a frame
            JFrame f = new JFrame("pop");
      
            // create a label
            JLabel l = new JLabel("This is a popup");
      
            f.setSize(400, 400);
      
            PopupFactory pf = new PopupFactory();
      
            // create a panel
            JPanel p2 = new JPanel();
      
            // set Background of panel
            p2.setBackground(Color.red);
      
            p2.add(l);
      
            // create a popup
            p = pf.getPopup(f, p2, 180, 100);
      
            // create a button
            JButton b = new JButton("click");
      
            // add action listener
            b.addActionListener(this);
      
            // create a panel
            JPanel p1 = new JPanel();
      
            p1.add(b);
            f.add(p1);
            f.show();
        }
      
        // if the button is pressed
        public void actionPerformed(ActionEvent e)
        {
            p.show();
        }
        // main class
        public static void main(String args[])
        {
            pop p = new pop();
        }
    }

    chevron_right

    
    

    Output:

  2. Java Program to create a popup (add a panel) and display it on a parent frame and also add an action listener to the popup: We create a popup p by creating a popup factory and using the function getpopup() which returns a popup. We will set the look and feel to System look and feel. We add this popup to a frame f titled “pop”, we will create a label and a button b19 titled “OK”( we will set the font of the label to a specified font object) and add it to a container panel p2 and set the background of panel p2 using setBackground() function. We will add the container panel p2 to the popup. We will also create a button b titled “click” added with an action listener and displays the popup when the button is pressed. The button b is added to a panel and the panel is added to the frame. Frame is set to the size 400,400 using setSize(400,400). finally, the frame is displayed using show() function.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Java Program to create a popup (add a panel) and
    // display it on a parent frame and also
    // add action listener to the popup
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    class pop1 extends JFrame implements ActionListener {
        // popup
        Popup po;
      
        // frame
        JFrame f;
      
        // panel
        JPanel p;
      
        // popupfactory
        PopupFactory pf;
      
        // constructor
        pop1()
        {
            // create a frame
            f = new JFrame("pop");
      
            f.setSize(400, 400);
      
            pf = new PopupFactory();
      
            // create a label
            JLabel l = new JLabel("This  is a popup menu");
      
            // create a new button
            JButton b19 = new JButton("OK");
      
            // add action listener
            b19.addActionListener(this);
      
            try {
                // set windows look and feel
                UIManager.setLookAndFeel(UIManager.
                      getSystemLookAndFeelClassName());
            }
            catch (Exception e) {
            }
      
            // create a panel
            p = new JPanel();
      
            p.setBackground(Color.blue);
      
            // create a font
            Font fo = new Font("BOLD", 1, 14);
      
            l.setFont(fo);
      
            // add contents to panel
            p.add(l);
            p.add(b19);
      
            p.setLayout(new GridLayout(2, 1));
      
            // create a popup
            po = pf.getPopup(f, p, 180, 100);
      
            // create a button
            JButton b = new JButton("click");
      
            // add action listener
            b.addActionListener(this);
      
            // create a panel
            JPanel p1 = new JPanel();
      
            p1.add(b);
            f.add(p1);
            f.show();
        }
      
        // if the button is pressed
        public void actionPerformed(ActionEvent e)
        {
            String d = e.getActionCommand();
            // if ok buton is pressed hide the popup
            if (d.equals("OK")) {
                po.hide();
      
                // create a popup
                po = pf.getPopup(f, p, 180, 100);
            }
            else
                po.show();
        }
        // main class
        public static void main(String args[])
        {
            pop1 p = new pop1();
        }
    }

    chevron_right

    
    

    Output:

  3. Note: The above programs might not run in an online IDE please use an offline compiler.

    Reference:



    My Personal Notes arrow_drop_up

    Second year Department of Information Technology Jadavpur University

    If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

    Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




    Article Tags :
    Practice Tags :


    Be the First to upvote.


    Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.