模块  java.desktop
软件包  javax.swing

Class JMenu

  • 实现的所有接口
    ImageObserverItemSelectableMenuContainerSerializableAccessibleMenuElementSwingConstants

    @JavaBean(description="A popup window containing menu items displayed in a menu bar.")public class JMenuextends JMenuItemimplements Accessible, MenuElement
    菜单的实现 - 包含JMenuItem的弹出窗口,当用户选择JMenuBar上的项目时显示该JMenuBar 除了JMenuItem s, JMenu还可以包含JSeparator s。

    本质上,菜单是一个带有关联JPopupMenu的按钮。 按下“按钮”时,将显示JPopupMenu 如果“按钮”在JMenuBar ,则菜单是顶级窗口。 如果“按钮”是另一个菜单项,则JPopupMenu是“右拉”菜单。

    可以通过Action s配置菜单,并在某种程度上控制Action 使用带有菜单的Action除了直接配置菜单外,还有许多其他好处。 有关更多详细信息,请参阅Swing Components Supporting Action ,您可以在“Java教程”的 How to Use Actions部分中找到更多信息。

    有关使用菜单的信息和示例,请参阅“Java教程” How to Use Menus部分

    警告: Swing不是线程安全的。 有关更多信息,请参阅Swing's Threading Policy

    警告:此类的序列化对象与以后的Swing版本不兼容。 当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。 从1.4开始, java.beans软件包中添加了对所有JavaBeans java.beans长期存储的支持。 请参阅XMLEncoder

    从以下版本开始:
    1.2
    另请参见:
    JMenuItemJSeparatorJMenuBarJPopupMenuSerialized Form
    • 构造方法详细信息

      • JMenu

        public JMenu()
        构造一个没有文本的新 JMenu
      • JMenu

        public JMenu​(String s)
        使用提供的字符串作为文本构造一个新的 JMenu
        参数
        s - 菜单标签的文本
      • JMenu

        public JMenu​(Action a)
        构造一个菜单,其属性取自提供的 Action
        参数
        a - Action
        从以下版本开始:
        1.3
      • JMenu

        public JMenu​(String s,             boolean b)
        构造一个新的 JMenu ,其中提供的字符串作为其文本,并指定为可撕下的菜单。
        参数
        s - 菜单标签的文本
        b - 菜单是否可以撕掉(尚未实施)
    • 方法详细信息

      • isSelected

        public boolean isSelected()
        如果当前选择(突出显示)菜单,则返回true。
        重写:
        isSelectedAbstractButton
        结果
        如果选择菜单,则为true,否则为false
      • setSelected

        @BeanProperty(expert=true,              hidden=true,              description="When the menu is selected, its popup child is shown.")public void setSelected​(boolean b)
        设置菜单的选择状态。
        重写:
        setSelectedAbstractButton
        参数
        b - 如果选择(突出显示)菜单, b true; false取消选择菜单
      • isPopupMenuVisible

        public boolean isPopupMenuVisible()
        如果菜单的弹出窗口可见,则返回true。
        结果
        如果菜单可见则为true,否则为false
      • setPopupMenuVisible

        @BeanProperty(bound=false,              expert=true,              hidden=true,              description="The popup menu\'s visibility")public void setPopupMenuVisible​(boolean b)
        设置菜单弹出窗口的可见性。 如果未启用该菜单,则此方法无效。
        参数
        b - 布尔值 - true表示菜单可见,false表示隐藏它
      • getPopupMenuOrigin

        protected Point getPopupMenuOrigin()
        计算JMenu弹出菜单的原点。 此方法使用外观和感觉命名属性Menu.menuPopupOffsetXMenu.menuPopupOffsetYMenu.submenuPopupOffsetXMenu.submenuPopupOffsetY调整弹出的确切位置。
        结果
        菜单坐标空间中的 Point应该用作 JMenu弹出菜单的原点
        从以下版本开始:
        1.3
      • getDelay

        public int getDelay()
        在弹出或关闭子菜单之前,返回建议的延迟(以毫秒为单位)。 每个外观(L&F)可以确定自己的观察delay属性的政策。 在大多数情况下,顶级菜单或拖动时都没有观察到延迟。 delay的默认值为0.此方法是外观代码的属性,用于管理各种UI实现的特性。
        结果
        delay属性
      • setDelay

        @BeanProperty(bound=false,              expert=true,              description="The delay between menu selection and making the popup menu visible")public void setDelay​(int d)
        设置弹出菜单PopupMenu之前的建议延迟。 每个外观(L&F)可以确定它自己的观察延迟属性的策略。 在大多数情况下,顶级菜单或拖动时都没有观察到延迟。 此方法是外观代码的属性,用于管理各种UI实现的特性。
        参数
        d - 延迟的毫秒数
        异常
        IllegalArgumentException - 如果 d小于0
      • setMenuLocation

        public void setMenuLocation​(int x,                            int y)
        设置弹出组件的位置。
        参数
        x - 弹出窗口新位置的x坐标
        y - 弹出窗口新位置的y坐标
      • add

        public JMenuItem add​(JMenuItem menuItem)
        将菜单项追加到此菜单的末尾。 返回添加的菜单项。
        参数
        menuItem - 要添加的 JMenuitem
        结果
        JMenuItem补充说
      • add

        public JMenuItem add​(String s)
        创建具有指定文本的新菜单项,并将其附加到此菜单的末尾。
        参数
        s - 要添加的菜单项的字符串
        结果
        新的 JMenuItem
      • add

        public JMenuItem add​(Action a)
        创建附加到指定的 Action对象的新菜单项,并将其附加到此菜单的末尾。
        参数
        a - 要添加的菜单项的 Action
        结果
        新的 JMenuItem
        另请参见:
        Action
      • createActionComponent

        protected JMenuItem createActionComponent​(Action a)
        创建 JMenuItemAction的工厂方法添加到 JMenu
        参数
        a - 要添加的菜单项的 Action
        结果
        新菜单项
        从以下版本开始:
        1.3
        另请参见:
        Action
      • createActionChangeListener

        protected PropertyChangeListener createActionChangeListener​(JMenuItem b)
        返回正确配置的 PropertyChangeListener ,在更改 Action时更新控件。
        参数
        b - 要为其创建 PropertyChangeListener的菜单项
        结果
        PropertyChangeListener适用于 b
      • addSeparator

        public void addSeparator()
        在菜单末尾添加一个新分隔符。
      • insert

        public void insert​(String s,                   int pos)
        在给定位置插入具有指定文本的新菜单项。
        参数
        s - 要添加的菜单项的文本
        pos - 一个整数,指定添加新菜单项的位置
        异常
        IllegalArgumentException - 当值 pos <0
      • insert

        public JMenuItem insert​(JMenuItem mi,                        int pos)
        将指定的 JMenuitem插入给定位置。
        参数
        mi - 要添加的 JMenuitem
        pos - 一个整数,指定添加新 JMenuitem
        结果
        新菜单项
        异常
        IllegalArgumentException - 如果值 pos <0
      • insert

        public JMenuItem insert​(Action a,                        int pos)
        在指定位置插入附加到指定 Action对象的新菜单项。
        参数
        a - 要添加的菜单项的 Action对象
        pos - 一个整数,指定添加新菜单项的位置
        结果
        新菜单项
        异常
        IllegalArgumentException - 如果值 pos <0
      • insertSeparator

        public void insertSeparator​(int index)
        在指定位置插入分隔符。
        参数
        index - 一个整数,指定插入菜单分隔符的位置
        异常
        IllegalArgumentException - 如果值 index <0
      • getItem

        public JMenuItem getItem​(int pos)
        返回指定位置的JMenuItem 如果pos处的组件不是菜单项,则返回null 包含此方法用于AWT兼容性。
        参数
        pos - 指定位置的整数
        结果
        指定位置的菜单项; null如果作为指定位置的项目不是菜单项
        异常
        IllegalArgumentException - 如果值 pos <0
      • getItemCount

        @BeanProperty(bound=false)public int getItemCount()
        返回菜单上的项目数,包括分隔符。 包含此方法用于AWT兼容性。
        结果
        一个等于菜单上项目数的整数
        另请参见:
        getMenuComponentCount()
      • isTearOff

        @BeanProperty(bound=false)public boolean isTearOff()
        如果可以撕掉菜单,则返回true。 此方法尚未实现。
        结果
        如果菜单可以被撕掉,则为true,否则为false
        异常
        Error - 如果调用 - 此方法尚未实现
      • remove

        public void remove​(JMenuItem item)
        从此菜单中删除指定的菜单项。 如果没有弹出菜单,则此方法无效。
        参数
        item - 要从菜单中删除的 JMenuItem
      • getMenuComponentCount

        @BeanProperty(bound=false)public int getMenuComponentCount()
        返回菜单上的组件数。
        结果
        包含菜单上组件数的整数
      • getMenuComponent

        public Component getMenuComponent​(int n)
        返回位于 n的组件。
        参数
        n - 要返回的组件的位置
        结果
        请求的组件,如果没有弹出菜单, null
      • getMenuComponents

        @BeanProperty(bound=false)public Component[] getMenuComponents()
        返回菜单子组件的Component s数组。 请注意,这将返回弹出菜单中的所有Component ,包括分隔符。
        结果
        如果没有弹出菜单, Component s数组或空数组
      • isTopLevelMenu

        @BeanProperty(bound=false)public boolean isTopLevelMenu()
        如果菜单是“顶级菜单”,即如果它是菜单栏的直接子菜单,则返回true。
        结果
        如果从菜单栏激活菜单,则为true; 如果从另一个菜单上的菜单项激活菜单,则为false
      • isMenuComponent

        public boolean isMenuComponent​(Component c)
        如果子菜单层次结构中存在指定的组件,则返回true。
        参数
        c - 待测试的 Component
        结果
        如果 Component存在, Component true,否则为false
      • getPopupMenu

        @BeanProperty(bound=false)public JPopupMenu getPopupMenu()
        返回与此菜单关联的弹出菜单。 如果没有popupmenu,它将创建一个。
        结果
        与此菜单关联的 JPopupMenu
      • addMenuListener

        public void addMenuListener​(MenuListener l)
        为菜单事件添加侦听器。
        参数
        l - 要添加的侦听器
      • removeMenuListener

        public void removeMenuListener​(MenuListener l)
        删除菜单事件的侦听器。
        参数
        l - 要删除的侦听器
      • getMenuListeners

        @BeanProperty(bound=false)public MenuListener[] getMenuListeners()
        返回使用addMenuListener()添加到此JMenu的所有 MenuListener的数组。
        结果
        如果没有添加任何侦听器,则添加所有 MenuListener或空数组
        从以下版本开始:
        1.4
      • fireMenuSelected

        protected void fireMenuSelected()
        通知所有已注册对此事件类型的通知感兴趣的听众。 事件实例是懒惰创建的。
        异常
        Error - 如果有一个 null监听器
        另请参见:
        EventListenerList
      • fireMenuDeselected

        protected void fireMenuDeselected()
        通知所有已注册对此事件类型的通知感兴趣的听众。 事件实例是懒惰创建的。
        异常
        Error - 如果有一个 null监听器
        另请参见:
        EventListenerList
      • fireMenuCanceled

        protected void fireMenuCanceled()
        通知所有已注册对此事件类型的通知感兴趣的听众。 事件实例是懒惰创建的。
        异常
        Error - 如果有一个 null监听器
        另请参见:
        EventListenerList
      • createWinListener

        protected JMenu.WinListener createWinListener​(JPopupMenu p)
        为弹出窗口创建一个窗口关闭侦听器。
        参数
        p - JPopupMenu
        结果
        新的窗口关闭监听器
        另请参见:
        JMenu.WinListener
      • getSubElements

        @BeanProperty(bound=false)public MenuElement[] getSubElements()
        返回包含此菜单组件子菜单的MenuElement数组。 如果弹出菜单是null返回一个空数组。 此方法需要符合MenuElement接口。 请注意,由于JSeparator s不符合MenuElement接口,因此该阵列仅包含JMenuItem s。
        Specified by:
        getSubElements ,界面 MenuElement
        重写:
        getSubElementsJMenuItem
        结果
        一组 MenuElement对象
      • getComponent

        public Component getComponent()
        返回java.awt.Component用于绘制此MenuElement 返回的组件用于转换事件并检测事件是否在菜单组件内。
        Specified by:
        getComponent在接口 MenuElement
        重写:
        getComponent在类 JMenuItem
        结果
        绘制此菜单项的 Component
      • setAccelerator

        public void setAccelerator​(KeyStroke keyStroke)
        setAccelerator未定义JMenu 请改用setMnemonic
        重写:
        setAccelerator在类 JMenuItem
        参数
        keyStroke - 键击组合,它将调用 JMenuItem而不导航菜单层次结构
        异常
        Error - 如果调用 - 未为JMenu定义此方法。 请改用setMnemonic
      • doClick

        public void doClick​(int pressTime)
        以编程方式执行“单击”。 这将覆盖方法AbstractButton.doClick以便弹出菜单。
        重写:
        doClickAbstractButton
        参数
        pressTime - 表示按下按钮的毫秒数
      • paramString

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