Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

JPopupMenu and submenus

843806Jun 20 2008 — edited Jun 30 2008
Hi,

I have an email-application with a TrayIcon that has a popup menu. For a couple of reasons I need to use a JPopupMenu instead of the java.awt.PopupMenu. Now, my problem is that I can't get it to display any submenus. The menu itself is there but nothing happens when you click it.
public class TrayIcon extends java.awt.TrayIcon implements ActionListener, MouseListener
{   
    AWTEventListenerProxy proxy;
    
    ...
    JMenuItem jPreferences;
    
    JPopupMenu jPopupMenu;
    ...
    JMenu jOptions;
    
    public TrayIcon( Image img )
    {
        super( img, null, null);
        
        this.initJPopupMenu();
        this.addMouseListener(this);
    }
    
    private void initJPopupMenu()
    {
        
        jPopupMenu = new JPopupMenu();
	
        /* Instantiate menu items */
        
        jOptions = new JPopupMenu("Options");
            jPreferences = new JMenuItem("Preferences");
        
        
        /* Initialize menu items */
        jPreferences.setActionCommand(PopUpMenuListener.PREFERENCES);
        jPreferences.addActionListener(popUpMenuListener);
        
        /* Add items to menu */
        jOptions.add(jPreferences);

        jPopupMenu.add(jOptions);
    }

    
        private class PopUpMenuListener implements ActionListener
    {
        ...
    }

    public void mouseClicked( final MouseEvent evt )
    {
                            
            if(evt.getButton() == 3)
            {
                Point p = evt.getLocationOnScreen();
                
                jPopupMenu.setLocation(p);
                jPopupMenu.setVisible(true);
            }
            else
            {
                jPopupMenu.setVisible(false);
            }
    }

    public void mousePressed( MouseEvent evt ){}

    public void mouseReleased( MouseEvent evt ){}

    public void mouseEntered( MouseEvent evt ){}

    public void mouseExited( MouseEvent evt ){}
    
}
Could any one tell me why this doesn't work. I have tried a lot of ways and can't get it to work.

//T
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 28 2008
Added on Jun 20 2008
9 comments
333 views