Module  javafx.controls
软件包  javafx.scene.control

Class Menu

  • All Implemented Interfaces:
    StyleableEventTarget


    @DefaultProperty("items")
    public class Menu
    extends MenuItem

    可触发的项目的弹出菜单,仅根据请求向用户显示。 当菜单可见时,在大多数情况下,用户可以在菜单返回到其隐藏状态之前选择一个菜单项。 这意味着菜单是放置重要功能的好地方,这些功能不一定需要在任何时候都可见到用户。

    菜单通常放置在MenuBar ,或作为另一个菜单的子菜单。 如果用户在用户界面的特定区域右键点击时提供上下文菜单,则这是使用错误的控件。 这是因为当将菜单添加到场景图中时,它具有将导致显示在屏幕上的视觉表示。 相反,在这种情况下应该使用ContextMenu

    创建菜单并将其插入到MenuBar中是很容易的,如下所示:

       final Menu menu1 = new Menu("File"); MenuBar menuBar = new MenuBar(); menuBar.getMenus().add(menu1);  

    菜单是MenuItem的子类,这意味着它可以插入到菜单的items ObservableList中,从而创建一个子菜单:

       MenuItem menu12 = new MenuItem("Open"); menu1.getItems().add(menu12);  

    ObservableList允许任何项目MenuItem类型将被插入,包括它的子类MenuMenuItemRadioMenuItemCheckMenuItemCustomMenuItemSeparatorMenuItem 为了在菜单中插入任意的Node ,可以使用CustomMenuItem。 这个一般规则的一个例外是SeparatorMenuItem可以用于插入分隔符。

    从以下版本开始:
    JavaFX 2.0
    另请参见:
    MenuBarMenuItem
    • 字段详细信息

      • ON_SHOWING

        public static final EventType<Event> ON_SHOWING

        当此菜单的contextMenu 被显示时调用。 但是如果contextMenu为空,则不会被调用。

      • ON_SHOWN

        public static final EventType<Event> ON_SHOWN

        当此菜单的contextMenu显示时调用。 但是如果contextMenu为空,则不会被调用。

      • ON_HIDING

        public static final EventType<Event> ON_HIDING

        当该菜单的contextMenu 被隐藏时调用。 但是如果contextMenu为空,则不会被调用。

      • ON_HIDDEN

        public static final EventType<Event> ON_HIDDEN

        当此菜单的contextMenu隐藏时调用。 但是如果contextMenu为空,则不会被调用。

    • 构造方法详细信息

      • Menu

        public Menu​()
        为其显示文本构造一个空字符串的菜单。
        从以下版本开始:
        JavaFX 2.2
      • Menu

        public Menu​(String text)
        构造一个菜单,并将显示文本设置为指定的文本。
        参数
        text - 要在菜单按钮上显示的文字
      • Menu

        public Menu​(String text,
                    Node graphic)
        构造一个菜单,并使用指定的文本设置显示文本,并将图形Node设置为给定节点。
        参数
        text - 要在菜单按钮上显示的文字
        graphic - 要在菜单按钮上显示的图形
      • Menu

        public Menu​(String text,
                    Node graphic,
                    MenuItem... items)
        构建一个菜单,并将指定文本的图形Node设置为给定节点,并将给定项目插入到items列表中。
        参数
        text - 要在菜单按钮上显示的文字
        graphic - 在菜单按钮上显示的图形
        items - 要在弹出菜单中显示的项目。
        从以下版本开始:
        JavaFX 8u40
    • 方法详细信息

      • isShowing

        public final boolean isShowing​()
        获取显示的属性的值。
        Property description:
        指示ContextMenu当前是否可见。
        Default value:
      • setOnShowing

        public final void setOnShowing​(EventHandler<Event> value)
        设置属性onShowing的值。
        Property description:
        ContextMenu被显示之前,即使菜单没有显示项目。 但是请注意,如果菜单没有有效的锚点节点,则不会调用此方法。
      • getOnShowing

        public final EventHandler<Event> getOnShowing​()
        获取属性onShowing的值。
        Property description:
        ContextMenu被显示之前,即使菜单没有显示项目。 但是请注意,如果菜单没有有效的锚点节点,则不会调用此方法。
      • setOnShown

        public final void setOnShown​(EventHandler<Event> value)
        设置属性onShown的值。
        Property description:
        ContextMenu之后刚刚显示。
      • getOnShown

        public final EventHandler<Event> getOnShown​()
        获取onShown属性的值。
        Property description:
        ContextMenu后显示。
      • setOnHiding

        public final void setOnHiding​(EventHandler<Event> value)
        设置属性onHiding的值。
        Property description:
        称之为ContextMenu之前被隐藏。
      • getOnHiding

        public final EventHandler<Event> getOnHiding​()
        获取属性onHiding的值。
        Property description:
        被称为在ContextMenu被隐藏之前。
      • setOnHidden

        public final void setOnHidden​(EventHandler<Event> value)
        设置属性onHidden的值。
        Property description:
        ContextMenu之后刚刚被隐藏。
      • getItems

        public final ObservableList<MenuItem> getItems​()
        在此菜单中显示的项目。 如果在运行时修改了ObservableList,菜单将按预期更新。
        结果
        项目清单
      • show

        public void show​()
        如果菜单未被禁用,并且ContextMenu尚未显示,则会导致显示ContextMenu
      • hide

        public void hide​()
        隐藏ContextMenu如果它以前显示,和任何显示子菜单。 如果此菜单未显示,则调用此功能不起作用。
      • addEventHandler

        public <E extends Event> void addEventHandler​(EventType<E> eventType,
                                                      EventHandler<E> eventHandler)
        在此MenuItem中注册一个事件处理程序。 当菜单项在事件传送的冒泡阶段期间接收到指定类型的Event时,调用处理程序。
        重写:
        addEventHandlerMenuItem
        参数类型
        E - 处理程序的特定事件类
        参数
        eventType - 由处理程序接收的事件的类型
        eventHandler - 要注册的处理程序
      • removeEventHandler

        public <E extends Event> void removeEventHandler​(EventType<E> eventType,
                                                         EventHandler<E> eventHandler)
        从此MenuItem中注销先前注册的事件处理程序。 一个处理程序可能已被注册用于不同的事件类型,因此调用者需要指定特定的事件类型,从中注销处理程序。
        重写:
        removeEventHandlerMenuItem
        参数类型
        E - 处理程序的特定事件类
        参数
        eventType - 要注销的事件类型
        eventHandler - 要注销的处理程序
      • buildEventDispatchChain

        public EventDispatchChain buildEventDispatchChain​(EventDispatchChain tail)
        为此目标构建事件调度链。 事件调度链包含可能对处理针对EventTarget的事件感兴趣的事件调度EventTarget 此事件目标不会自动添加到链中,因此如果要处理事件,则需要为链接添加一个EventDispatcher

        在事件目标是某些层次结构的一部分的情况下,它的链通常是从从层次结构的根被收集到事件目标的事件分派器构建的。

        事件调度链是通过修改提供的初始事件调度链来构建的。 返回的链应该在其末端具有初始链,所以调度员应该放在初始链上。

        调用者不应该假定初始链条保持不变,也不会返回值引用不同的链。

        Specified by:
        buildEventDispatchChain接口 EventTarget
        重写:
        buildEventDispatchChainMenuItem
        参数
        tail - 建立的初始链
        结果
        此目标的结果事件调度链