Popup Menus

The Popup class provides a pop-up menu, from which a single item may be selected at any one time. The menu is displayed when the user performs the triggering action, whcih is platform-dependent. In this example, we use a double oclick as the triggering event.

See the PopupMenu class in the java.awt package.

Because the popup menu is activated in response to a user action, the event methods are also shown, below.

PopupMenu popup;
MenuItem cut, copy, paste;

  public void init ( ){

    popup = new PopupMenu ();
    cut = new MenuItem ( "cut" );
    cut.addActionListener ( this );
    copy = new MenuItem ( "copy" );
    copy.addActionListener ( this );
    paste = new MenuItem ( "paste" );
    paste.addActionListener ( this );

    popup.add ( cut );
    popup.add ( copy );
    popup.add ( paste );
    outerBox.add ( popup );

  } // end init


  //****  MouseListener methods

  int lastX, lastY;

    public void mousePressed ( MouseEvent e )  {
    }  // end mousePressed

    public void mouseReleased ( MouseEvent e )  {
        if ( e.isPopupTrigger() )  {
            eraseMessage ();
            lastX = e.getX();
            lastY = e.getY();
            popup.show ( outerBox, e.getX(), e.getY() );
        }  // end process popupmenu actions
    }  // end mouseReleased

    public void mouseEntered ( MouseEvent e )  {
    }  // end mouseEntered

    public void mouseExited ( MouseEvent e )  {
    }  // end mouseExited

    public void mouseClicked ( MouseEvent e )  {
    }  // end mouseClicked


  //****  ActionListener methods

  public void actionPerformed ( ActionEvent e )  {

    Object s = e.getSource();

    Graphics g = outerBox.getGraphics ();
    if ( s == cut ) g.drawString( "Cut selected", lastX, lastY );
    if ( s == copy )  g.drawString( "Copy selected", lastX, lastY );
    if ( s == paste )  g.drawString( "Paste selected", lastX, lastY );

  }  // end actionPerformed