SWING - JMenuItem 类

简介

JMenuItem 类表示菜单中的实际项目。 菜单中的所有项目都应派生自 JMenuItem 类或其子类之一。 默认情况下,它包含一个简单的标签菜单项。


类声明

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

public class JMenuItem
   extends AbstractButton
      implements Accessible, MenuElement

类构造函数

序号 构造函数 & 描述
1

JMenuItem()

创建一个没有设置文本或图标的 JMenuItem。

2

JMenuItem(Action a)

创建一个菜单项,其属性取自指定的 Action。

3

JMenuItem(Icon icon)

创建具有指定图标的 JMenuItem。

4

JMenuItem(String text)

创建具有指定文本的 JMenuItem。

5

JMenuItem(String text, Icon icon)

创建具有指定文本和图标的 JMenuItem。

6

JMenuItem(String text, int mnemonic)

创建具有指定文本和键盘助记符的 JMenuItem。


类方法

序号 方法 & 描述
1

protected void actionPropertyChanged(Action action, String propertyName)

更新按钮的状态以响应关联操作中的属性更改。

2

void addMenuDragMouseListener(MenuDragMouseListener l)

将 MenuDragMouseListener 添加到菜单项。

3

void addMenuKeyListener(MenuKeyListener l)

将 MenuKeyListener 添加到菜单项。

4

protected void configurePropertiesFromAction(Action a)

设置此按钮的属性以匹配指定操作中的属性。

5

protected void fireMenuDragMouseDragged(MenuDragMouseEvent event)

通知所有已注册对此事件类型的通知感兴趣的侦听器。

6

protected void fireMenuDragMouseEntered(MenuDragMouseEvent event)

通知所有已注册对此事件类型的通知感兴趣的侦听器。

7

protected void fireMenuDragMouseExited(MenuDragMouseEvent event)

通知所有已注册对此事件类型的通知感兴趣的侦听器。

8

protected void fireMenuDragMouseReleased(MenuDragMouseEvent event)

通知所有已注册对此事件类型的通知感兴趣的侦听器。

9

protected void fireMenuKeyPressed(MenuKeyEvent event)

通知所有已注册对此事件类型的通知感兴趣的侦听器。

10

protected void fireMenuKeyReleased(MenuKeyEvent event)

通知所有已注册对此事件类型的通知感兴趣的侦听器。

11

protected void fireMenuKeyTyped(MenuKeyEvent event)

通知所有已注册对此事件类型的通知感兴趣的侦听器。

12

KeyStroke getAccelerator()

返回用作菜单项的加速键的 KeyStroke。

13

AccessibleContext getAccessibleContext()

返回与此 JMenuItem 关联的 AccessibleContext。

14

Component getComponent()

返回用于绘制此对象的 java.awt.Component。

15

MenuDragMouseListener[] getMenuDragMouseListeners()

返回使用 addMenuDragMouseListener() 添加到此 JMenuItem 的所有 MenuDragMouseListener 的数组。

16

MenuKeyListener[] getMenuKeyListeners()

返回使用 addMenuKeyListener() 添加到此 JMenuItem 的所有 MenuKeyListener 的数组。

17

MenuElement[] getSubElements()

此方法返回一个包含此菜单组件的子菜单组件的数组。

18

String getUIClassID()

返回用于构造用于呈现此组件的 L&F 类的名称的后缀。

19

protected void init(String text, Icon icon)

使用指定的文本和图标初始化菜单项。

20

boolean isArmed()

返回菜单项是否 "armed"。

21

void menuSelectionChanged(boolean isIncluded)

在选择或取消选择 MenuElement 时由 MenuSelectionManager 调用。

22

protected String paramString()

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

23

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

处理从 MenuSelectionManager 转发的键事件,并在必要时使用 MenuSelectionManager 的 API 更改菜单选择。

24

void processMenuDragMouseEvent(MenuDragMouseEvent e)

处理菜单中的鼠标拖动。

25

void processMenuKeyEvent(MenuKeyEvent e)

处理菜单中的击键。

26

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

处理从 MenuSelectionManager 转发的鼠标事件,并在必要时使用 MenuSelectionManager 的 API 更改菜单选择。

27

void removeMenuDragMouseListener(MenuDragMouseListener l)

从菜单项中移除 MenuDragMouseListener。

28

void removeMenuKeyListener(MenuKeyListener l)

从菜单项中移除一个 MenuKeyListener。

29

void setAccelerator(KeyStroke keyStroke)

设置在不导航菜单层次结构的情况下调用菜单项的操作侦听器的组合键。

30

void setArmed(boolean b)

将菜单项标识为 "armed"。

31

void setEnabled(boolean b)

启用或禁用菜单项。

32

void setModel(ButtonModel newModel)

设置此按钮所代表的模型。

33

void setUI(MenuItemUI ui)

设置呈现此组件的外观对象。

34

void updateUI()

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


继承的方法

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

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

JMenuItem 示例

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

Verify the following output. (Click on File Menu. Select any menu item.)

SWING JMenuItem

❮ SWING 菜单类