Module java.desktop
Package javax.swing

Class JMenuBar

所有已实现的接口:
ImageObserver, MenuContainer, Serializable, Accessible, MenuElement
直接已知的子类:
BasicInternalFrameTitlePane.SystemMenuBar

@JavaBean(defaultProperty="UI", description="A container for holding and displaying menus.") public class JMenuBar extends JComponent implements Accessible, MenuElement
菜单栏的实现。您可以将JMenu对象添加到菜单栏以构建菜单。当用户选择一个JMenu对象时,它关联的JPopupMenu将被显示,允许用户在其中选择一个JMenuItem

有关使用菜单栏的信息和示例,请参见如何使用菜单,这是Java教程中的一个部分。

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

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

警告: 默认情况下,按Tab键不会从与其他Swing组件一起添加到容器中的JMenuBar转移焦点,因为JMenuBarfocusTraversalKeysEnabled属性设置为false。要解决此问题,您应该调用JMenuBar.setFocusTraversalKeysEnabled(true)方法。

自版本:
1.2
参见:
  • Constructor Details

    • JMenuBar

      public JMenuBar()
      创建一个新的菜单栏。
  • Method Details

    • getUI

      public MenuBarUI getUI()
      返回菜单栏的当前UI。
      重写:
      getUI 在类 JComponent
      返回:
      一个MenuBarUI,即菜单栏的当前L&F对象
      参见:
    • setUI

      @BeanProperty(hidden=true, visualUpdate=true, description="The UI object that implements the Component\'s LookAndFeel.") public void setUI(MenuBarUI ui)
      设置渲染此组件的L&F对象。
      参数:
      ui - 新的MenuBarUI L&F对象
      参见:
    • updateUI

      public void updateUI()
      使用当前外观和感觉的值重置UI属性。
      重写:
      updateUI 在类 JComponent
      参见:
    • getUIClassID

      @BeanProperty(bound=false) public String getUIClassID()
      返回渲染此组件的L&F类的名称。
      重写:
      getUIClassID 在类 JComponent
      返回:
      字符串"MenuBarUI"
      参见:
    • getSelectionModel

      public SingleSelectionModel getSelectionModel()
      返回处理单个选择的模型对象。
      返回:
      SingleSelectionModel属性
      参见:
    • setSelectionModel

      @BeanProperty(description="The selection model, recording which child is selected.") public void setSelectionModel(SingleSelectionModel model)
      设置处理单个选择的模型对象。
      参数:
      model - 要使用的SingleSelectionModel
      参见:
    • add

      public JMenu add(JMenu c)
      将指定的菜单追加到菜单栏的末尾。
      参数:
      c - 要添加的JMenu组件
      返回:
      菜单组件
    • getMenu

      public JMenu getMenu(int index)
      返回菜单栏中指定位置的菜单。
      参数:
      index - 一个整数,表示菜单栏中的位置,其中0是第一个位置
      返回:
      该位置处的JMenu,如果该位置没有JMenu(即如果是JMenuItem),则返回null
    • getMenuCount

      @BeanProperty(bound=false) public int getMenuCount()
      返回菜单栏中的项目数。
      返回:
      菜单栏中的项目数
    • setHelpMenu

      public void setHelpMenu(JMenu menu)
      设置用户在菜单栏中选择“帮助”选项时显示的帮助菜单。此方法尚未实现,将引发异常。
      参数:
      menu - 为用户提供帮助的JMenu
    • getHelpMenu

      public JMenu getHelpMenu()
      获取菜单栏的帮助菜单。此方法尚未实现,将引发异常。
      返回:
      为用户提供帮助的JMenu
    • getComponentAtIndex

      @Deprecated public Component getComponentAtIndex(int i)
      Deprecated.
      replaced by getComponent(int i)
      返回指定索引处的组件。
      参数:
      i - 指定位置的整数,其中0是第一个
      返回:
      该位置处的Component,对于无效索引则返回null
    • getComponentIndex

      public int getComponentIndex(Component c)
      返回指定组件的索引。
      参数:
      c - 要查找的Component
      返回:
      组件的位置,其中0是第一个;如果找不到则返回-1
    • setSelected

      public void setSelected(Component sel)
      设置当前选定的组件,从而对选择模型进行更改。
      参数:
      sel - 要选择的Component
    • isSelected

      @BeanProperty(bound=false) public boolean isSelected()
      如果菜单栏当前有组件被选中,则返回true。
      返回:
      如果已进行选择,则返回true,否则返回false
    • isBorderPainted

      public boolean isBorderPainted()
      如果应绘制菜单栏的边框,则返回true。
      返回:
      如果应绘制边框,则返回true,否则返回false
    • setBorderPainted

      @BeanProperty(visualUpdate=true, description="Whether the border should be painted.") public void setBorderPainted(boolean b)
      设置是否应绘制边框。
      参数:
      b - 如果为true且边框属性不为null,则绘制边框。
      参见:
    • paintBorder

      protected void paintBorder(Graphics g)
      如果BorderPainted属性为true,则绘制菜单栏的边框。
      覆盖:
      paintBorder 在类 JComponent
      参数:
      g - 用于绘制的Graphics上下文
      参见:
    • setMargin

      @BeanProperty(visualUpdate=true, description="The space between the menubar\'s border and its contents") public void setMargin(Insets m)
      设置菜单栏边框与其菜单之间的边距。设置为null将导致菜单栏使用默认边距。
      参数:
      m - 包含边距值的Insets对象
      参见:
    • getMargin

      public Insets getMargin()
      返回菜单栏边框与其菜单之间的边距。如果没有先前的边距,则将创建一个具有零大小的默认边距。
      返回:
      包含边距值的Insets对象
      参见:
    • processMouseEvent

      public void processMouseEvent(MouseEvent event, MenuElement[] path, MenuSelectionManager manager)
      实现为一个MenuElement -- 什么也不做。
      指定者:
      processMouseEvent 在接口 MenuElement
      参数:
      event - 要处理的MouseEvent
      path - 菜单层次结构中接收元素的路径
      manager - 菜单层次结构的MenuSelectionManager
      参见:
    • processKeyEvent

      public void processKeyEvent(KeyEvent e, MenuElement[] path, MenuSelectionManager manager)
      实现为一个MenuElement -- 什么也不做。
      指定者:
      processKeyEvent 在接口 MenuElement
      参数:
      e - 要处理的KeyEvent
      path - 菜单层次结构中接收元素的路径
      manager - 菜单层次结构的MenuSelectionManager
      参见:
    • getSubElements

      @BeanProperty(bound=false) public MenuElement[] getSubElements()
      实现为一个MenuElement -- 返回此菜单栏中的菜单。这是实现MenuElement接口的原因 -- 以便菜单栏可以像其他菜单元素一样处理。
      指定者:
      getSubElements 在接口 MenuElement
      返回:
      菜单栏中菜单项的数组。
    • getComponent

      public Component getComponent()
      实现为一个MenuElement。返回此对象。
      指定者:
      getComponent 在接口 MenuElement
      返回:
      当前的Component(此对象)
      参见:
    • paramString

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

      @BeanProperty(bound=false) public AccessibleContext getAccessibleContext()
      获取与此JMenuBar关联的AccessibleContext。对于JMenuBars,AccessibleContext采用AccessibleJMenuBar的形式。如有必要,将创建一个新的AccessibleJMenuBar实例。
      指定者:
      getAccessibleContext 在接口 Accessible
      覆盖:
      getAccessibleContext 在类 Component
      返回:
      作为此JMenuBar的AccessibleContext的AccessibleJMenuBar
    • processKeyBinding

      protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed)
      子类化以检查所有子菜单。
      覆盖:
      processKeyBinding 在类 JComponent
      参数:
      ks - 查询的KeyStroke
      e - KeyEvent
      condition - 以下值之一:
      • JComponent.WHEN_FOCUSED
      • JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
      • JComponent.WHEN_IN_FOCUSED_WINDOW
      pressed - 如果按下键,则为true
      返回:
      如果有绑定到操作,并且操作已启用,则为true
      自1.3起:
      1.3
    • addNotify

      public void addNotify()
      覆盖JComponent.addNotify以向当前键盘管理器注册此菜单栏。
      覆盖:
      addNotify 在类 JComponent
      参见:
    • removeNotify

      public void removeNotify()
      覆盖JComponent.removeNotify以取消向当前键盘管理器注册此菜单栏。
      覆盖:
      removeNotify 在类 JComponent
      参见: