位置:首頁 > Java技術 > Swing > Swing JMenuBar類

Swing JMenuBar類

JMenuBar類提供了一個菜單欄的實現。

類聲明

以下是聲明 javax.swing.JMenuBar類:

public class JMenuBar
   extends JComponent
      implements Accessible, MenuElement

類構造函數

S.N. 構造函數 & 描述
1 JMenuBar() 
Creates a new menu bar.

類方法

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

方法繼承

這個類從以下類繼承的方法:

  • javax.swing.JComponent

  • java.awt.Container

  • java.awt.Component

  • java.lang.Object

JMenuBar 例子

選擇使用任何編輯器創建以下java程序在 D:/ > SWING > com > yiibai > gui >

SwingMenuDemo.java
package com.yiibai.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.");
      }    
   }
}

編譯程序,使用命令提示符。到 D:/ > SWING 然後輸出以下命令。

D:SWING>javac comyiibaiguiSwingMenuDemo.java

如果冇有錯誤出現,這意味著編譯成功。使用下麵的命令來運行程序。

D:SWING>java com.yiibai.gui.SwingMenuDemo

驗證下麵的輸出

SWING JMenuBar