SWING JMenuBar Class

Advertisements


Introduction

The JMenuBar class provides an implementation of a menu bar.

Class declaration

Following is the declaration for javax.swing.JMenuBar class:

public class JMenuBar
   extends JComponent
      implements Accessible, MenuElement

Class constructors

S.N.Constructor & Description
1JMenuBar()
Creates a new menu bar.

Class methods

JMenu add(JMenu c)
Appends the specified menu to the end of the menu bar.
S.N.Method & Description
1void addNotify()
Overrides JComponent.addNotify to register this menu bar with the current keyboard manager.
1AccessibleContext getAccessibleContext()
Gets the AccessibleContext associated with this JMenuBar.
2Component getComponent()
Implemented to be a MenuElement.
3Component getComponentAtIndex(int i)
Deprecated. replaced by getComponent(int i)
4int getComponentIndex(Component c)
Returns the index of the specified component.
5JMenu getHelpMenu()
Gets the help menu for the menu bar.
6Insets getMargin()
Returns the margin between the menubar's border and its menus.
7JMenu getMenu(int index)
Returns the menu at the specified position in the menu bar.
8int getMenuCount()
Returns the number of items in the menu bar.
9SingleSelectionModel getSelectionModel()
Returns the model object that handles single selections.
10MenuElement[] getSubElements()
Implemented to be a MenuElement -- returns the menus in this menu bar.
11MenuBarUI getUI()
Returns the menubar's current UI.
12String getUIClassID()
Returns the name of the L&F class that renders this component.
13boolean isBorderPainted()
Returns true if the menu bars border should be painted.
14boolean isSelected()
Returns true if the menu bar currently has a component selected.
15void menuSelectionChanged(boolean isIncluded)
Implemented to be a MenuElement -- does nothing.
16protected void paintBorder(Graphics g)
Paints the menubar's border if BorderPainted property is true.
17protected String paramString()
Returns a string representation of this JMenuBar.
18protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed)
Subclassed to check all the child menus.
19void processKeyEvent(KeyEvent e, MenuElement[] path, MenuSelectionManager manager)
Implemented to be a MenuElement -- does nothing.
20void processMouseEvent(MouseEvent event, MenuElement[] path, MenuSelectionManager manager)
Implemented to be a MenuElement -- does nothing.
21void removeNotify()
Overrides JComponent.removeNotify to unregister this menu bar with the current keyboard manager.
22void setBorderPainted(boolean b)
Sets whether the border should be painted.
23void setHelpMenu(JMenu menu)
Sets the help menu that appears when the user selects the "help" option in the menu bar.
24void setMargin(Insets m)
Sets the margin between the menubar's border and its menus.
25void setSelected(Component sel)
Sets the currently selected component, producing a a change to the selection model.
26void setSelectionModel(SingleSelectionModel model)
Sets the model object to handle single selections.
27void setUI(MenuBarUI ui)
Sets the L&F object that renders this component.
28void updateUI()
Resets the UI property with a value from the current look and feel.

Methods inherited

This class inherits methods from the following classes:

  • javax.swing.JComponent

  • java.awt.Container

  • java.awt.Component

  • java.lang.Object

JMenuBar Example

Create the following java program using any editor of your choice in say D:/ > SWING > com > tutorialspoint > gui >

SwingMenuDemo.java
package com.tutorialspoint.gui;

import java.awt.*;
import java.awt.event.*;

public class SwingMenuDemo {
   private JFrame mainFrame;
   private JLabel headerLabel;
   private JLabel statusLabel;
   private JPanel controlPanel; 

   public SwingMenuDemo(){
      prepareGUI();
   }

   public static void main(String[] args){
      SwingMenuDemo  swingMenuDemo = new SwingMenuDemo();     
      swingMenuDemo.showMenuDemo();
   }
   
   private void prepareGUI(){
      mainFrame = new JFrame("Java SWING Examples");
      mainFrame.setSize(400,400);
      mainFrame.setLayout(new GridLayout(3, 1));

      headerLabel = new JLabel("",JLabel.CENTER );
      statusLabel = new JLabel("",JLabel.CENTER);        

      statusLabel.setSize(350,100);
      mainFrame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
            System.exit(0);
         }        
      });    
      controlPanel = new JPanel();
      controlPanel.setLayout(new FlowLayout());

      mainFrame.add(headerLabel);
      mainFrame.add(controlPanel);
      mainFrame.add(statusLabel);
      mainFrame.setVisible(true);  
   }

   private void showMenuDemo(){
      //create a menu bar
      final JMenuBar menuBar = new JMenuBar();

      //create menus
      JMenu fileMenu = new JMenu("File");
      JMenu editMenu = new JMenu("Edit"); 
      final JMenu aboutMenu = new JMenu("About");
      final JMenu linkMenu = new JMenu("Links");
     
      //create menu items
      JMenuItem newMenuItem = new JMenuItem("New");
      newMenuItem.setMnemonic(KeyEvent.VK_N);
      newMenuItem.setActionCommand("New");

      JMenuItem openMenuItem = new JMenuItem("Open");
      openMenuItem.setActionCommand("Open");

      JMenuItem saveMenuItem = new JMenuItem("Save");
      saveMenuItem.setActionCommand("Save");

      JMenuItem exitMenuItem = new JMenuItem("Exit");
      exitMenuItem.setActionCommand("Exit");

      JMenuItem cutMenuItem = new JMenuItem("Cut");
      cutMenuItem.setActionCommand("Cut");

      JMenuItem copyMenuItem = new JMenuItem("Copy");
      copyMenuItem.setActionCommand("Copy");

      JMenuItem pasteMenuItem = new JMenuItem("Paste");
      pasteMenuItem.setActionCommand("Paste");

      MenuItemListener menuItemListener = new MenuItemListener();

      newMenuItem.addActionListener(menuItemListener);
      openMenuItem.addActionListener(menuItemListener);
      saveMenuItem.addActionListener(menuItemListener);
      exitMenuItem.addActionListener(menuItemListener);
      cutMenuItem.addActionListener(menuItemListener);
      copyMenuItem.addActionListener(menuItemListener);
      pasteMenuItem.addActionListener(menuItemListener);

      final JCheckBoxMenuItem showWindowMenu = 
         new JCheckBoxMenuItem("Show About", true);
      showWindowMenu.addItemListener(new ItemListener() {
         public void itemStateChanged(ItemEvent e) {
            if(showWindowMenu.getState()){
               menuBar.add(aboutMenu);
            }else{
               menuBar.remove(aboutMenu);
            }
         }
      });

      final JRadioButtonMenuItem showLinksMenu = 
         new JRadioButtonMenuItem("Show Links", true);
      showLinksMenu.addItemListener(new ItemListener() {
         public void itemStateChanged(ItemEvent e) {
            if(menuBar.getMenu(3)!= null){
               menuBar.remove(linkMenu);
               mainFrame.repaint();
            }else{                   
               menuBar.add(linkMenu);
               mainFrame.repaint();
            }
         }
      });

      //add menu items to menus
      fileMenu.add(newMenuItem);
      fileMenu.add(openMenuItem);
      fileMenu.add(saveMenuItem);
      fileMenu.addSeparator();
      fileMenu.add(showWindowMenu);
      fileMenu.addSeparator();
      fileMenu.add(showLinksMenu);       
      fileMenu.addSeparator();
      fileMenu.add(exitMenuItem);        
      editMenu.add(cutMenuItem);
      editMenu.add(copyMenuItem);
      editMenu.add(pasteMenuItem);

      //add menu to menubar
      menuBar.add(fileMenu);
      menuBar.add(editMenu);
      menuBar.add(aboutMenu);       
      menuBar.add(linkMenu);

      //add menubar to the frame
      mainFrame.setJMenuBar(menuBar);
      mainFrame.setVisible(true);     
   }

   class MenuItemListener implements ActionListener {
      public void actionPerformed(ActionEvent e) {            
         statusLabel.setText(e.getActionCommand() 
         + " JMenuItem clicked.");
      }    
   }
}

Compile the program using command prompt. Go to D:/ > SWING and type the following command.

D:\SWING>javac com\tutorialspoint\gui\SwingMenuDemo.java

If no error comes that means compilation is successful. Run the program using following command.

D:\SWING>java com.tutorialspoint.gui.SwingMenuDemo

Verify the following output

SWING JMenuBar

Advertisements
Advertisements