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 示例

使用您选择的任何编辑器创建以下 Java 程序,例如在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.");
      }    
   }
}

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

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

如果没有错误,则表示编译成功。使用以下命令运行程序。

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

验证以下输出。

SWING JMenuBar
swing_menu.htm
广告