SWING - JMenuBar 类

简介

JMenuBar 类提供了菜单栏的实现。


类声明

以下是 javax.swing.JMenuBar 类的声明 −

public class JMenuBar
   extends JComponent
      implements Accessible, MenuElement

类构造函数

序号 构造函数 & 描述
1

JMenuBar()

创建一个新的菜单栏。


类方法

序号 方法 & 描述
1

JMenu add(JMenu c)

将指定的菜单附加到菜单栏的末尾。

2

void addNotify()

覆盖 JComponent.addNotify 以向当前键盘管理器注册此菜单栏。

3

AccessibleContext getAccessibleContext()

获取与此 JMenuBar 关联的 AccessibleContext。

4

Component getComponent()

实现为 MenuElement。

5

Component getComponentAtIndex(int i)

已弃用。 替换为 getComponent(int i)

6

int getComponentIndex(Component c)

返回指定组件的索引。

7

JMenu getHelpMenu()

获取菜单栏的帮助菜单。

8

Insets getMargin()

返回菜单栏的边框与其菜单之间的边距。

9

JMenu getMenu(int index)

返回菜单栏中指定位置的菜单。

10

int getMenuCount()

返回菜单栏中的项目数。

11

SingleSelectionModel getSelectionModel()

返回处理单个选择的模型对象。

12

MenuElement[] getSubElements()

实现为 MenuElement。 返回此菜单栏中的菜单。

13

MenuBarUI getUI()

返回菜单栏的当前 UI。

14

String getUIClassID()

返回呈现此组件的 L&F 类的名称。

15

boolean isBorderPainted()

如果应该绘制菜单栏边框,则返回 true。

16

boolean isSelected()

如果菜单栏当前选择了一个组件,则返回 true。

17

void menuSelectionChanged(boolean isIncluded)

实现为 MenuElement,什么都不做。

18

protected void paintBorder(Graphics g)

如果 BorderPainted 属性为 true,则绘制菜单栏的边框。

19

protected String paramString()

返回此 JMenuBar 的字符串表示形式。

20

protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed)

子类化以检查所有子菜单。

21

void processKeyEvent(KeyEvent e, MenuElement[] path, MenuSelectionManager manager)

实现为 MenuElement,不执行任何操作。

22

void processMouseEvent(MouseEvent event, MenuElement[] path, MenuSelectionManager manager)

实现为 MenuElement,不执行任何操作。

23

void removeNotify()

覆盖 JComponent.removeNotify 以在当前键盘管理器中取消注册此菜单栏。

24

void setBorderPainted(boolean b)

设置是否应绘制边框。

25

void setHelpMenu(JMenu menu)

设置当用户在菜单栏中选择"帮助"选项时出现的帮助菜单。

26

void setMargin(Insets m)

设置菜单栏的边框与其菜单之间的边距。

27

void setSelected(Component sel)

设置当前选定的组件,对选择模型产生更改。

28

void setSelectionModel(SingleSelectionModel model)

设置模型对象以处理单个选择。

29

void setUI(MenuBarUI ui)

设置呈现此组件的 L&F 对象。

30

void updateUI()

使用当前外观中的值重置 UI 属性。


继承的方法

这个类继承了以下类的方法 −

  • javax.swing.JComponent
  • java.awt.Container
  • java.awt.Component
  • java.lang.Object

JMenuBar 示例

D:/ > SWING > com > tutorialspoint > gui > 中使用您选择的任何编辑器创建以下 Java 程序

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.");
      }    
   }
}

使用命令提示符编译程序。 转到 D:/ > SWING 并键入以下命令。

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

如果没有报错,说明编译成功。 使用以下命令运行程序。

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

验证以下输出。

SWING JMenuBar

❮ SWING 菜单类