Search code examples
javasubmenujmenujmenuitem

JMenu - Submenus won't display


I just began using JMenu. When the buttons are clicked, I want the menu to display a submenu category, like a dropbox.

So my question is, "Why isn't the submenu visible?"

Please look below for the relevant code.

    // Frame title
    frame = new JFrame(NAME);
    frame.setSize(350, 250);
    frame.setVisible(true);

    // Add menu bar
    JMenuBar mb = new JMenuBar();


    // 1.0 Site Menu, S
    JMenu siteMenu = new JMenu("Site");
    siteMenu.setMnemonic(KeyEvent.VK_S);
    mb.add(siteMenu);

    // 1.1 Site->Website, W
    JMenuItem websiteMenu = new JMenuItem("Website", KeyEvent.VK_W);
    mb.add(websiteMenu);

    // 1.2 Site->Forum, F
    JMenuItem forumMenu = new JMenuItem("Forum", KeyEvent.VK_F);
    mb.add(forumMenu);

    // 2.0 Gallery Menu, G
    JMenu galleryMenu = new JMenu("Gallery");
    galleryMenu.setMnemonic(KeyEvent.VK_G);
    mb.add(galleryMenu);

    // 2.1 Gallery->Custom Skins, C
    JMenuItem skinsMenu = new JMenuItem("Custom Skins", KeyEvent.VK_C);
    mb.add(skinsMenu);

    // 3.0 Screenshot Menu, S
    JMenu screenshotMenu = new JMenu("Screenshot");
    screenshotMenu.setMnemonic(KeyEvent.VK_S);
    mb.add(screenshotMenu);


    // Sets the menubar for this frame
    frame.setJMenuBar(mb);

I have tried to lookup the issue, but I just can't seem to locate it..


Solution

  • You're adding the JMenuItem objects directly to the JMenuBar. Try adding them to your JMenu objects instead:

    // 1.0 Site Menu, S
    JMenu siteMenu = new JMenu("Site");
    siteMenu.setMnemonic(KeyEvent.VK_S);
    mb.add(siteMenu);
    
    // 1.1 Site->Website, W
    JMenuItem websiteMenu = new JMenuItem("Website", KeyEvent.VK_W);
    siteMenu.add(websiteMenu);
    
    // 1.2 Site->Forum, F
    JMenuItem forumMenu = new JMenuItem("Forum", KeyEvent.VK_F);
    siteMenu.add(forumMenu);
    
    // and so on