Module java.desktop
Package javax.swing

Class JMenuItem

所有已实现的接口:
ImageObserver, ItemSelectable, MenuContainer, Serializable, Accessible, MenuElement, SwingConstants
直接已知的子类:
JCheckBoxMenuItem, JMenu, JRadioButtonMenuItem

@JavaBean(defaultProperty="UIClassID", description="An item which can be selected in a menu.") public class JMenuItem extends AbstractButton implements Accessible, MenuElement
菜单中的一个项目的实现。菜单项本质上是一个位于列表中的按钮。当用户选择“按钮”时,与菜单项关联的操作将被执行。包含在JPopupMenu中的JMenuItem正是执行这个功能。

菜单项可以通过Action进行配置,并在一定程度上进行控制。使用Action与菜单项相比,有许多好处。有关更多详细信息,请参阅支持Action的Swing组件,您可以在The Java Tutorial如何使用Actions部分找到更多信息。

有关更多文档和示例,请参阅The Java Tutorial中的如何使用菜单

警告: Swing不是线程安全的。有关更多信息,请参阅Swing的线程策略

警告: 该类的序列化对象将不兼容未来的Swing版本。当前的序列化支持适用于短期存储或在运行相同Swing版本的应用程序之间进行RMI。从1.4开始,已将所有JavaBeans的长期存储支持添加到java.beans包中。请参阅XMLEncoder

自1.2版本起:
参见:
  • Constructor Details

    • JMenuItem

      public JMenuItem()
      创建一个没有设置文本或图标的JMenuItem
    • JMenuItem

      public JMenuItem(Icon icon)
      创建一个带有指定图标的JMenuItem
      参数:
      icon - JMenuItem的图标
    • JMenuItem

      public JMenuItem(String text)
      创建一个带有指定文本的JMenuItem
      参数:
      text - JMenuItem的文本
    • JMenuItem

      public JMenuItem(Action a)
      创建一个从指定Action中获取属性的菜单项。
      参数:
      a - JMenuItem的动作
      自1.3版本起:
    • JMenuItem

      public JMenuItem(String text, Icon icon)
      创建一个带有指定文本和图标的JMenuItem
      参数:
      text - JMenuItem的文本
      icon - JMenuItem的图标
    • JMenuItem

      public JMenuItem(String text, int mnemonic)
      创建一个带有指定文本和键盘助记符的JMenuItem
      参数:
      text - JMenuItem的文本
      mnemonic - JMenuItem的键盘助记符
  • Method Details

    • setModel

      public void setModel(ButtonModel newModel)
      设置此按钮表示的模型。
      覆盖:
      setModel 在类 AbstractButton
      参数:
      newModel - 新的ButtonModel
      参见:
    • init

      protected void init(String text, Icon icon)
      使用指定的文本和图标初始化菜单项。
      覆盖:
      init 在类 AbstractButton
      参数:
      text - JMenuItem的文本
      icon - JMenuItem的图标
    • setUI

      @BeanProperty(hidden=true, visualUpdate=true, description="The UI object that implements the LookAndFeel.") public void setUI(MenuItemUI ui)
      设置呈现此组件的外观对象。
      参数:
      ui - JMenuItemUI的L&F对象
      参见:
    • updateUI

      public void updateUI()
      重置来自当前外观的值的UI属性。
      覆盖:
      updateUI 在类 AbstractButton
      参见:
    • getUIClassID

      @BeanProperty(bound=false) public String getUIClassID()
      返回用于构造用于呈现此组件的L&F类的名称的后缀。
      覆盖:
      getUIClassID 在类 JComponent
      返回:
      字符串 "MenuItemUI"
      参见:
    • setArmed

      @BeanProperty(bound=false, hidden=true, description="Mouse release will fire an action event") public void setArmed(boolean b)
      将菜单项标识为“armed”。如果鼠标按钮在此项上释放,则菜单的操作事件将触发。如果鼠标按钮在其他位置释放,则事件不会触发,菜单项将被解除武装。
      参数:
      b - true表示武装菜单项以便选择
    • isArmed

      public boolean isArmed()
      返回菜单项是否“armed”。
      返回:
      如果菜单项已武装且可选择,则为true
      参见:
    • setEnabled

      @BeanProperty(preferred=true, description="The enabled state of the component.") public void setEnabled(boolean b)
      启用或禁用菜单项。
      覆盖:
      setEnabled 在类 AbstractButton
      参数:
      b - true表示启用该项
      参见:
    • setAccelerator

      @BeanProperty(preferred=true, description="The keystroke combination which will invoke the JMenuItem\'s actionlisteners without navigating the menu hierarchy") public void setAccelerator(KeyStroke keyStroke)
      设置调用菜单项的动作监听器而无需导航菜单层次结构的键组合。安装正确的操作是UI的责任。请注意,当键盘加速键被键入时,无论菜单当前是否显示,都会起作用。
      参数:
      keyStroke - 将用作加速器的KeyStroke
    • getAccelerator

      public KeyStroke getAccelerator()
      返回用作菜单项加速器的KeyStroke
      返回:
      一个标识加速键的KeyStroke对象
    • configurePropertiesFromAction

      protected void configurePropertiesFromAction(Action a)
      设置此按钮上的属性以匹配指定Action中的属性。有关此方法设置的属性的更多详细信息,请参阅支持Action的Swing组件
      覆盖:
      configurePropertiesFromAction 在类 AbstractButton
      参数:
      a - 要获取属性的Action,或null
      自:
      1.3
      参见:
    • actionPropertyChanged

      protected void actionPropertyChanged(Action action, String propertyName)
      根据关联动作中的属性更改更新按钮的状态。此方法从createActionPropertyChangeListener返回的PropertyChangeListener中调用。子类通常不需要调用此方法。支持其他Action属性的子类应该重写此方法和configurePropertiesFromAction

      有关此方法设置的属性列表,请参阅支持Action的Swing组件中的表格。

      覆盖:
      actionPropertyChanged 在类 AbstractButton
      参数:
      action - 与此按钮关联的Action
      propertyName - 更改的属性名称
      自:
      1.6
      参见:
    • processMouseEvent

      public void processMouseEvent(MouseEvent e, MenuElement[] path, MenuSelectionManager manager)
      处理从MenuSelectionManager转发的鼠标事件,并根据需要使用MenuSelectionManager的API更改菜单选择。

      注意:您无需将事件转发给子组件。这由MenuSelectionManager自动完成。

      指定者:
      processMouseEvent 在接口 MenuElement
      参数:
      e - 一个MouseEvent
      path - MenuElement路径数组
      manager - MenuSelectionManager
    • processKeyEvent

      public void processKeyEvent(KeyEvent e, MenuElement[] path, MenuSelectionManager manager)
      处理从MenuSelectionManager转发的键盘事件,并根据需要使用MenuSelectionManager的API更改菜单选择。

      注意:您无需将事件转发给子组件。这由MenuSelectionManager自动完成。

      指定者:
      processKeyEvent 在接口 MenuElement
      参数:
      e - 一个KeyEvent
      path - MenuElement路径数组
      manager - MenuSelectionManager
    • processMenuDragMouseEvent

      public void processMenuDragMouseEvent(MenuDragMouseEvent e)
      处理菜单中的鼠标拖动。
      参数:
      e - 一个MenuDragMouseEvent对象
    • processMenuKeyEvent

      public void processMenuKeyEvent(MenuKeyEvent e)
      处理菜单中的按键。
      参数:
      e - 一个MenuKeyEvent对象
    • fireMenuDragMouseEntered

      protected void fireMenuDragMouseEntered(MenuDragMouseEvent event)
      通知所有已注册对此事件类型感兴趣的侦听器。
      参数:
      event - 一个MenuMouseDragEvent
      参见:
    • fireMenuDragMouseExited

      protected void fireMenuDragMouseExited(MenuDragMouseEvent event)
      通知所有已注册对此事件类型感兴趣的侦听器。
      参数:
      event - 一个MenuDragMouseEvent
      参见:
    • fireMenuDragMouseDragged

      protected void fireMenuDragMouseDragged(MenuDragMouseEvent event)
      通知所有已注册对此事件类型感兴趣的侦听器。
      参数:
      event - 一个MenuDragMouseEvent
      参见:
    • fireMenuDragMouseReleased

      protected void fireMenuDragMouseReleased(MenuDragMouseEvent event)
      通知所有已注册对此事件类型感兴趣的侦听器。
      参数:
      event - 一个MenuDragMouseEvent
      参见:
    • fireMenuKeyPressed

      protected void fireMenuKeyPressed(MenuKeyEvent event)
      通知所有已注册对此事件类型感兴趣的侦听器。
      参数:
      event - 一个MenuKeyEvent
      参见:
    • fireMenuKeyReleased

      protected void fireMenuKeyReleased(MenuKeyEvent event)
      通知所有已注册对此事件类型感兴趣的侦听器。
      参数:
      event - 一个MenuKeyEvent
      参见:
    • fireMenuKeyTyped

      protected void fireMenuKeyTyped(MenuKeyEvent event)
      通知所有已注册对此事件类型感兴趣的侦听器。
      参数:
      event - 一个MenuKeyEvent
      参见:
    • getSubElements

      @BeanProperty(bound=false) public MenuElement[] getSubElements()
      此方法返回包含此菜单组件的子菜单组件的数组。
      指定者:
      getSubElements 在接口 MenuElement
      返回:
      一个MenuElement数组
    • getComponent

      public Component getComponent()
      返回用于绘制此对象的java.awt.Component。返回的组件将用于转换事件并检测事件是否在菜单组件内部。
      指定者:
      getComponent 在接口 MenuElement
      返回:
      绘制此菜单项的Component
    • addMenuDragMouseListener

      public void addMenuDragMouseListener(MenuDragMouseListener l)
      向菜单项添加一个MenuDragMouseListener
      参数:
      l - 要添加的MenuDragMouseListener
    • removeMenuDragMouseListener

      public void removeMenuDragMouseListener(MenuDragMouseListener l)
      从菜单项中删除MenuDragMouseListener
      参数:
      l - 要移除的MenuDragMouseListener
    • getMenuDragMouseListeners

      @BeanProperty(bound=false) public MenuDragMouseListener[] getMenuDragMouseListeners()
      返回添加到此JMenuItem中的所有MenuDragMouseListener的数组。
      返回:
      所有已添加的MenuDragMouseListener或如果未添加任何监听器则返回空数组
      自:
      1.4
    • addMenuKeyListener

      public void addMenuKeyListener(MenuKeyListener l)
      向菜单项添加一个MenuKeyListener
      参数:
      l - 要添加的MenuKeyListener
    • removeMenuKeyListener

      public void removeMenuKeyListener(MenuKeyListener l)
      从菜单项中删除MenuKeyListener
      参数:
      l - 要移除的MenuKeyListener
    • getMenuKeyListeners

      @BeanProperty(bound=false) public MenuKeyListener[] getMenuKeyListeners()
      返回添加到此JMenuItem中的所有MenuKeyListener的数组。
      返回:
      所有已添加的MenuKeyListener或如果未添加任何监听器则返回空数组
      自:
      1.4
    • paramString

      protected String paramString()
      返回此JMenuItem的字符串表示形式。此方法仅用于调试目的,返回的字符串的内容和格式可能因实现而异。返回的字符串可能为空但不能为null
      覆盖:
      paramString 在类 AbstractButton
      返回:
      JMenuItem的字符串表示形式
    • getAccessibleContext

      @BeanProperty(bound=false) public AccessibleContext getAccessibleContext()
      返回与此JMenuItem关联的AccessibleContext。对于JMenuItemAccessibleContext采用AccessibleJMenuItem的形式。如果需要,将创建一个新的AccessibleJMenuItem实例。
      指定者:
      getAccessibleContext 在接口 Accessible
      覆盖:
      getAccessibleContext 在类 Component
      返回:
      作为此JMenuItemAccessibleContextAccessibleJMenuItem