Class Menu

  • All Implemented Interfaces:
    Styleable, EventTarget

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

    A popup menu of actionable items which is displayed to the user only upon request. When a menu is visible, in most use cases, the user can select one menu item before the menu goes back to its hidden state. This means the menu is a good place to put important functionality that does not necessarily need to be visible at all times to the user.

    Menus are typically placed in a MenuBar, or as a submenu of another Menu. If the intention is to offer a context menu when the user right-clicks in a certain area of their user interface, then this is the wrong control to use. This is because when Menu is added to the scenegraph, it has a visual representation that will result in it appearing on screen. Instead, ContextMenu should be used in this circumstance.

    Creating a Menu and inserting it into a MenuBar is easy, as shown below:

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

    A Menu is a subclass of MenuItem which means that it can be inserted into a Menu's items ObservableList, resulting in a submenu being created:

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

    The items ObservableList allows for any MenuItem type to be inserted, including its subclasses Menu, MenuItem, RadioMenuItem, CheckMenuItem, CustomMenuItem and SeparatorMenuItem. In order to insert an arbitrary Node to a Menu, a CustomMenuItem can be used. One exception to this general rule is that SeparatorMenuItem could be used for inserting a separator.

    Since:
    JavaFX 2.0
    See Also:
    MenuBar, MenuItem
    • Field Detail

      • ON_SHOWING

        public static final EventType<Event> ON_SHOWING

        Called when the contextMenu for this menu will be shown. However if the contextMenu is empty then this will not be called.

      • ON_SHOWN

        public static final EventType<Event> ON_SHOWN

        Called when the contextMenu for this menu shows. However if the contextMenu is empty then this will not be called.

      • ON_HIDING

        public static final EventType<Event> ON_HIDING

        Called when the contextMenu for this menu will be hidden. However if the contextMenu is empty then this will not be called.

      • ON_HIDDEN

        public static final EventType<Event> ON_HIDDEN

        Called when the contextMenu for this menu is hidden. However if the contextMenu is empty then this will not be called.

    • Constructor Detail

      • Menu

        public Menu()
        Constructs a Menu with an empty string for its display text.
        Since:
        JavaFX 2.2
      • Menu

        public Menu​(String text)
        Constructs a Menu and sets the display text with the specified text.
        Parameters:
        text - the text to display on the menu button
      • Menu

        public Menu​(String text,
                    Node graphic)
        Constructs a Menu and sets the display text with the specified text and sets the graphic Node to the given node.
        Parameters:
        text - the text to display on the menu button
        graphic - the graphic to display on the menu button
      • Menu

        public Menu​(String text,
                    Node graphic,
                    MenuItem... items)
        Constructs a Menu and sets the display text with the specified text, the graphic Node to the given node, and inserts the given items into the items list.
        Parameters:
        text - the text to display on the menu button
        graphic - the graphic to display on the menu button
        items - The items to display in the popup menu.
        Since:
        JavaFX 8u40
    • Method Detail

      • isShowing

        public final boolean isShowing()
        Gets the value of the property showing.
        Property description:
        Indicates whether the ContextMenu is currently visible.
        Default value:
        false
      • setOnShowing

        public final void setOnShowing​(EventHandler<Event> value)
        Sets the value of the property onShowing.
        Property description:
        Called just prior to the ContextMenu being shown, even if the menu has no items to show. Note however that this won't be called if the menu does not have a valid anchor node.
      • getOnShowing

        public final EventHandler<Event> getOnShowing()
        Gets the value of the property onShowing.
        Property description:
        Called just prior to the ContextMenu being shown, even if the menu has no items to show. Note however that this won't be called if the menu does not have a valid anchor node.
      • setOnShown

        public final void setOnShown​(EventHandler<Event> value)
        Sets the value of the property onShown.
        Property description:
        Called just after the ContextMenu is shown.
      • getOnShown

        public final EventHandler<Event> getOnShown()
        Gets the value of the property onShown.
        Property description:
        Called just after the ContextMenu is shown.
      • setOnHiding

        public final void setOnHiding​(EventHandler<Event> value)
        Sets the value of the property onHiding.
        Property description:
        Called just prior to the ContextMenu being hidden.
      • getOnHiding

        public final EventHandler<Event> getOnHiding()
        Gets the value of the property onHiding.
        Property description:
        Called just prior to the ContextMenu being hidden.
      • setOnHidden

        public final void setOnHidden​(EventHandler<Event> value)
        Sets the value of the property onHidden.
        Property description:
        Called just after the ContextMenu has been hidden.
      • getOnHidden

        public final EventHandler<Event> getOnHidden()
        Gets the value of the property onHidden.
        Property description:
        Called just after the ContextMenu has been hidden.
      • getItems

        public final ObservableList<MenuItem> getItems()
        The items to show within this menu. If this ObservableList is modified at runtime, the Menu will update as expected.
        Returns:
        the list of items
      • show

        public void show()
        If the Menu is not disabled and the ContextMenu is not already showing, then this will cause the ContextMenu to be shown.
      • hide

        public void hide()
        Hides the ContextMenu if it was previously showing, and any showing submenus. If this menu is not showing, then invoking this function has no effect.