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"));
Image of the MenuButton control

MnemonicParsing is enabled by default for MenuButton.

Since:
JavaFX 2.0
See Also:
MenuItem, Menu, SplitMenuButton
  • Property Details

  • Field Details

    • 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 Details

    • MenuButton

      public MenuButton()
      Creates a new empty menu button. Use Labeled.setText(String), Labeled.setGraphic(Node) and getItems() to set the content.
    • 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 Details

    • 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.
    • showingProperty

      public final ReadOnlyBooleanProperty showingProperty()
      Indicates whether the ContextMenu is currently visible.
      See Also:
      isShowing()
    • 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)
    • onShowingProperty

      public final ObjectProperty<EventHandler<Event>> onShowingProperty()
      Called just prior to the ContextMenu being shown.
      Since:
      10
      See Also:
      getOnShowing(), setOnShowing(EventHandler)
    • 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
    • onShownProperty

      public final ObjectProperty<EventHandler<Event>> onShownProperty()
      Called just after the ContextMenu is shown.
      Since:
      10
      See Also:
      getOnShown(), setOnShown(EventHandler)
    • 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
    • onHidingProperty

      public final ObjectProperty<EventHandler<Event>> onHidingProperty()
      Called just prior to the ContextMenu being hidden.
      Since:
      10
      See Also:
      getOnHiding(), setOnHiding(EventHandler)
    • 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
    • onHiddenProperty

      public final ObjectProperty<EventHandler<Event>> onHiddenProperty()
      Called just after the ContextMenu has been hidden.
      Since:
      10
      See Also:
      getOnHidden(), setOnHidden(EventHandler)
    • 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
    • show

      public void show()
      Shows the ContextMenu, assuming this MenuButton is not disabled.
      See Also:
      Node.isDisabled(), isShowing()
    • hide

      public void hide()
      Hides the ContextMenu.
      See Also:
      isShowing()
    • 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