Module java.desktop
Package java.awt

Class MenuItem

所有已实现的接口:
Serializable, Accessible
直接已知的子类:
CheckboxMenuItem, Menu

public class MenuItem extends MenuComponent implements Accessible
菜单中的所有项必须属于类MenuItem或其子类之一。

默认的MenuItem对象代表一个简单的带标签的菜单项。

这张菜单栏的图片显示了五个菜单项:以下文本描述此图形。
前两个项是简单的菜单项,标记为"Basic""Simple"。接着是一个分隔符,它本身也是一个菜单项,使用标签"-"创建。接下来是一个标记为"Check"CheckboxMenuItem实例。最后一个菜单项是一个标记为"More Examples"的子菜单,这个子菜单是Menu的一个实例。

当选择菜单项时,AWT会向菜单项发送一个动作事件。由于事件是ActionEvent的一个实例,processEvent方法会检查事件并将其传递给processActionEvent。后者会将事件重定向到任何已注册对此菜单项生成的动作事件感兴趣的ActionListener对象。

请注意,子类Menu覆盖了此行为,并且在选择其子项之前不会向框架发送任何事件。

参见:
  • Constructor Details

    • MenuItem

      public MenuItem() throws HeadlessException
      用空标签和无键盘快捷键构造一个新的MenuItem。
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true。
      自:
      1.1
      参见:
    • MenuItem

      public MenuItem(String label) throws HeadlessException
      用指定的标签和无键盘快捷键构造一个新的MenuItem。请注意,标签中使用"-"保留用于指示菜单项之间的分隔符。默认情况下,除分隔符外的所有菜单项都是启用的。
      参数:
      label - 此菜单项的标签。
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true。
      自:
      1.0
      参见:
    • MenuItem

      public MenuItem(String label, MenuShortcut s) throws HeadlessException
      创建一个带有关联键盘快捷键的菜单项。请注意,标签中使用"-"保留用于指示菜单项之间的分隔符。默认情况下,除分隔符外的所有菜单项都是启用的。
      参数:
      label - 此菜单项的标签。
      s - 与此菜单项关联的MenuShortcut的实例。
      抛出:
      HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true。
      自:
      1.1
      参见:
  • Method Details

    • addNotify

      public void addNotify()
      创建菜单项的对等体。对等体允许我们修改菜单项的外观而不改变其功能。
    • getLabel

      public String getLabel()
      获取此菜单项的标签。
      返回:
      此菜单项的标签,如果此菜单项没有标签,则返回null
      自:
      1.0
      参见:
    • setLabel

      public void setLabel(String label)
      将此菜单项的标签设置为指定的标签。
      参数:
      label - 新标签,如果不需要标签,则为null
      自:
      1.0
      参见:
    • isEnabled

      public boolean isEnabled()
      检查此菜单项是否已启用。
      返回:
      如果项目已启用,则返回true;否则返回false
      自:
      1.0
      参见:
    • setEnabled

      public void setEnabled(boolean b)
      设置此菜单项是否可选择。
      参数:
      b - 如果为true,则启用此菜单项;如果为false,则禁用它。
      自:
      1.1
      参见:
    • enable

      @Deprecated public void enable()
      Deprecated.
      As of JDK version 1.1, replaced by setEnabled(boolean).
    • enable

      @Deprecated public void enable(boolean b)
      Deprecated.
      As of JDK version 1.1, replaced by setEnabled(boolean).
      设置此菜单项是否可选择。
      参数:
      b - 如果为true,则启用此菜单项;否则禁用
    • disable

      @Deprecated public void disable()
      Deprecated.
      As of JDK version 1.1, replaced by setEnabled(boolean).
    • getShortcut

      public MenuShortcut getShortcut()
      获取与此菜单项关联的MenuShortcut对象,
      返回:
      与此菜单项关联的菜单快捷键,如果未指定任何菜单快捷键,则返回null
      自:
      1.1
      参见:
    • setShortcut

      public void setShortcut(MenuShortcut s)
      设置与此菜单项关联的MenuShortcut对象。如果菜单快捷键已与此菜单项关联,则将其替换。
      参数:
      s - 要与此菜单项关联的菜单快捷键。
      自:
      1.1
      参见:
    • deleteShortcut

      public void deleteShortcut()
      删除与此菜单项关联的任何MenuShortcut对象。
      自:
      1.1
    • enableEvents

      protected final void enableEvents(long eventsToEnable)
      启用此菜单项的事件传递,对由指定事件掩码参数定义的事件

      由于当为该类型添加监听器时,事件类型会自动启用,因此此方法只需要由MenuItem的子类调用,这些子类希望将指定的事件类型传递给processEvent,而不管是否已注册监听器。

      参数:
      eventsToEnable - 定义事件类型的事件掩码
      自:
      1.1
      参见:
    • disableEvents

      protected final void disableEvents(long eventsToDisable)
      禁用此菜单项的事件传递,对由指定事件掩码参数定义的事件。
      参数:
      eventsToDisable - 定义事件类型的事件掩码
      自1.1版本起:
      1.1
      参见:
    • setActionCommand

      public void setActionCommand(String command)
      设置此菜单项触发的动作事件的命令名称。

      默认情况下,动作命令设置为菜单项的标签。

      参数:
      command - 要为此菜单项设置的动作命令。
      自1.1版本起:
      1.1
      参见:
    • getActionCommand

      public String getActionCommand()
      获取此菜单项触发的动作事件的命令名称。
      返回:
      动作命令名称
      自1.1版本起:
      1.1
      参见:
    • addActionListener

      public void addActionListener(ActionListener l)
      向此菜单项添加指定的动作监听器以接收来自此菜单项的动作事件。如果 l 为 null,则不会抛出异常,也不会执行任何操作。

      有关 AWT 线程模型的详细信息,请参阅 AWT 线程问题

      参数:
      l - 动作监听器。
      自1.1版本起:
      1.1
      参见:
    • removeActionListener

      public void removeActionListener(ActionListener l)
      删除指定的动作监听器,使其不再从此菜单项接收动作事件。如果 l 为 null,则不会抛出异常,也不会执行任何操作。

      有关 AWT 线程模型的详细信息,请参阅 AWT 线程问题

      参数:
      l - 动作监听器。
      自1.1版本起:
      1.1
      参见:
    • getActionListeners

      public ActionListener[] getActionListeners()
      返回在此菜单项上注册的所有动作监听器的数组。
      返回:
      所有此菜单项的 ActionListener 或如果当前未注册任何动作监听器,则返回空数组
      自1.4版本起:
      1.4
      参见:
    • getListeners

      public <T extends EventListener> T[] getListeners(Class<T> listenerType)
      返回当前在此 MenuItem 上注册为 FooListener 的所有对象的数组。 FooListener 是使用 addFooListener 方法注册的。

      您可以使用类字面量(例如 FooListener.class)指定 listenerType 参数。例如,您可以使用以下代码查询 MenuItem m 的动作监听器:

      ActionListener[] als = (ActionListener[])(m.getListeners(ActionListener.class));
      如果不存在此类监听器,则此方法返回一个空数组。
      类型参数:
      T - 监听器的类型
      参数:
      listenerType - 请求的监听器类型;此参数应指定从 java.util.EventListener 继承的接口
      返回:
      在此菜单项上注册为 FooListener 的所有对象的数组,如果尚未添加此类监听器,则返回空数组
      抛出:
      ClassCastException - 如果 listenerType 未指定实现 java.util.EventListener 的类或接口
      自1.3版本起:
      1.3
      参见:
    • processEvent

      protected void processEvent(AWTEvent e)
      处理此菜单项上的事件。如果事件是 ActionEvent 的实例,则调用 MenuItem 定义的另一个方法 processActionEvent

      当前,菜单项仅支持动作事件。

      请注意,如果事件参数为 null,则行为是未指定的,可能会导致异常。

      覆盖:
      processEvent 在类 MenuComponent
      参数:
      e - 事件
      自1.1版本起:
      1.1
      参见:
    • processActionEvent

      protected void processActionEvent(ActionEvent e)
      处理在此菜单项上发生的动作事件,将其分派给任何注册的 ActionListener 对象。除非为此组件启用了动作事件,否则不会调用此方法。当发生以下情况之一时,将启用动作事件:
      • 通过 addActionListener 注册了一个 ActionListener 对象。
      • 通过 enableEvents 启用了动作事件。

      请注意,如果事件参数为 null,则行为是未指定的,可能会导致异常。

      参数:
      e - 动作事件
      自1.1版本起:
      1.1
      参见:
    • paramString

      public String paramString()
      返回表示此 MenuItem 状态的字符串。此方法仅用于调试目的,返回的字符串的内容和格式可能因实现而异。返回的字符串可能为空,但不能为 null
      覆盖:
      paramString 在类 MenuComponent
      返回:
      此菜单项的参数字符串
    • getAccessibleContext

      public AccessibleContext getAccessibleContext()
      获取与此 MenuItem 关联的 AccessibleContext。对于菜单项,AccessibleContext 采用 AccessibleAWTMenuItem 的形式。如果需要,将创建一个新的 AccessibleAWTMenuItem 实例。
      指定者:
      getAccessibleContext 在接口 Accessible
      覆盖:
      getAccessibleContext 在类 MenuComponent
      返回:
      作为此 MenuItem 的 AccessibleContext 的 AccessibleAWTMenuItem
      自1.3版本起:
      1.3