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)

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

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()

返回菜单项是否“已启用”。

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)

将菜单项标识为“已启用”。

31

void setEnabled(boolean b)

启用或禁用菜单项。

32

void setModel(ButtonModel newModel)

设置此按钮表示的模型。

33

void setUI(MenuItemUI ui)

设置呈现此组件的 look and feel 对象。

34

void updateUI()

使用当前 look and feel 中的值重置 UI 属性。

继承的方法

此类继承自以下类的方法:

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

JMenuItem 示例

使用您选择的任何编辑器创建以下 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 JMenuItem
swing_menu.htm
广告