Class MenuButton

  • All Implemented Interfaces:
    Styleable, EventTarget, Skinnable
    Direct Known Subclasses:
    SplitMenuButton

    public class MenuButton
    extends ButtonBase
    MenuButton is a button which, when clicked or pressed, will show a ContextMenu. A MenuButton shares a very similar API to the Menu control, insofar that you set the items that should be shown in the items ObservableList, and there is a text property to specify the label shown within the MenuButton.

    As mentioned, like the Menu API itself, you'll find an items ObservableList within which you can provide anything that extends from MenuItem. There are several useful subclasses of MenuItem including RadioMenuItem, CheckMenuItem, Menu, SeparatorMenuItem and CustomMenuItem.

    A MenuButton can be set to show its menu on any side of the button. This is specified using the popupSide property. By default the menu appears below the button. However, regardless of the popupSide specified, if there is not enough room, the ContextMenu will be smartly repositioned, most probably to be on the opposite side of the MenuButton.

    Example:

     MenuButton m = new MenuButton("Eats");
     m.getItems().addAll(new MenuItem("Burger"), new MenuItem("Hot Dog"));
     

    MnemonicParsing is enabled by default for MenuButton.

    Since:
    JavaFX 2.0
    See Also:
    MenuItem, Menu, SplitMenuButton
    • Field Detail

      • ON_SHOWING

        public static final EventType<Event> ON_SHOWING
        Called prior to the MenuButton showing its popup after the user has clicked or otherwise interacted with the MenuButton.
        Since:
        JavaFX 8u60
      • ON_SHOWN

        public static final EventType<Event> ON_SHOWN
        Called after the MenuButton has shown its popup.
        Since:
        JavaFX 8u60
      • ON_HIDING

        public static final EventType<Event> ON_HIDING
        Called when the MenuButton popup will be hidden.
        Since:
        JavaFX 8u60
      • ON_HIDDEN

        public static final EventType<Event> ON_HIDDEN
        Called when the MenuButton popup has been hidden.
        Since:
        JavaFX 8u60
    • Constructor Detail

      • MenuButton

        public MenuButton​(String text)
        Creates a new empty menu button with the given text to display on the button. Use Labeled.setGraphic(Node) and getItems() to set the content.
        Parameters:
        text - the text to display on the menu button
      • MenuButton

        public MenuButton​(String text,
                          Node graphic)
        Creates a new empty menu button with the given text and graphic to display on the button. Use getItems() to set the content.
        Parameters:
        text - the text to display on the menu button
        graphic - the graphic to display on the menu button
      • MenuButton

        public MenuButton​(String text,
                          Node graphic,
                          MenuItem... items)
        Creates a new menu button with the given text and graphic to display on the button, 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

      • getItems

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

        Commonly used controls include including MenuItem, CheckMenuItem, RadioMenuItem, and of course Menu, which if added to a menu, will become a sub menu. SeparatorMenuItem is another commonly used Node in the Menu's items ObservableList.

        Returns:
        the list of menu items within this buttons menu
      • isShowing

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

        public final void setPopupSide​(Side value)
        Sets the value of the property popupSide.
        Property description:
        Indicates on which side the ContextMenu should open in relation to the MenuButton. Menu items are generally laid out vertically in either case. For example, if the menu button were in a vertical toolbar on the left edge of the application, you might change popupSide to Side.RIGHT so that the popup will appear to the right of the MenuButton.
        Default value:
        Side.BOTTOM
      • getPopupSide

        public final Side getPopupSide()
        Gets the value of the property popupSide.
        Property description:
        Indicates on which side the ContextMenu should open in relation to the MenuButton. Menu items are generally laid out vertically in either case. For example, if the menu button were in a vertical toolbar on the left edge of the application, you might change popupSide to Side.RIGHT so that the popup will appear to the right of the MenuButton.
        Default value:
        Side.BOTTOM
      • popupSideProperty

        public final ObjectProperty<Side> popupSideProperty()
        Indicates on which side the ContextMenu should open in relation to the MenuButton. Menu items are generally laid out vertically in either case. For example, if the menu button were in a vertical toolbar on the left edge of the application, you might change popupSide to Side.RIGHT so that the popup will appear to the right of the MenuButton.
        Default value:
        Side.BOTTOM
        See Also:
        getPopupSide(), setPopupSide(Side)
      • 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.
        Since:
        10
      • getOnShowing

        public final EventHandler<Event> getOnShowing()
        Gets the value of the property onShowing.
        Property description:
        Called just prior to the ContextMenu being shown.
        Since:
        10
      • setOnShown

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

        public final EventHandler<Event> getOnShown()
        Gets the value of the property onShown.
        Property description:
        Called just after the ContextMenu is shown.
        Since:
        10
      • 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.
        Since:
        10
      • getOnHiding

        public final EventHandler<Event> getOnHiding()
        Gets the value of the property onHiding.
        Property description:
        Called just prior to the ContextMenu being hidden.
        Since:
        10
      • 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.
        Since:
        10
      • getOnHidden

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

        public void fire()
        This has no impact.
        Specified by:
        fire in class ButtonBase
      • createDefaultSkin

        protected Skin<?> createDefaultSkin()
        Create a new instance of the default skin for this control. This is called to create a skin for the control if no skin is provided via CSS -fx-skin or set explicitly in a sub-class with setSkin(...).
        Overrides:
        createDefaultSkin in class Control
        Returns:
        new instance of default skin for this control. If null then the control will have no skin unless one is provided by css.
      • executeAccessibleAction

        public void executeAccessibleAction​(AccessibleAction action,
                                            Object... parameters)
        This method is called by the assistive technology to request the action indicated by the argument should be executed.

        This method is commonly overridden by subclasses to implement action that are required for a specific role.
        If a particular action is not handled, the superclass implementation must be called.

        Overrides:
        executeAccessibleAction in class ButtonBase
        Parameters:
        action - the action to execute
        parameters - optional list of parameters
        See Also:
        AccessibleAction