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:
  • 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 showing property.
      Property description:
      Indicates whether the ContextMenu is currently visible.
      Returns:
      the value of the showing property
      See Also:
    • showingProperty

      public final ReadOnlyBooleanProperty showingProperty()
      Indicates whether the ContextMenu is currently visible.
      Returns:
      the showing property
      See Also:
    • setPopupSide

      public final void setPopupSide(Side value)
      Sets the value of the popupSide property.
      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
      Parameters:
      value - the value for the popupSide property
      See Also:
    • getPopupSide

      public final Side getPopupSide()
      Gets the value of the popupSide property.
      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
      Returns:
      the value of the popupSide property
      See Also:
    • 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
      Returns:
      the popupSide property
      See Also:
    • onShowingProperty

      public final ObjectProperty<EventHandler<Event>> onShowingProperty()
      Called just prior to the ContextMenu being shown.
      Returns:
      the on showing property
      Since:
      10
      See Also:
    • setOnShowing

      public final void setOnShowing(EventHandler<Event> value)
      Sets the value of the onShowing property.
      Property description:
      Called just prior to the ContextMenu being shown.
      Parameters:
      value - the value for the onShowing property
      Since:
      10
      See Also:
    • getOnShowing

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

      public final ObjectProperty<EventHandler<Event>> onShownProperty()
      Called just after the ContextMenu is shown.
      Returns:
      the on shown property
      Since:
      10
      See Also:
    • setOnShown

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

      public final EventHandler<Event> getOnShown()
      Gets the value of the onShown property.
      Property description:
      Called just after the ContextMenu is shown.
      Returns:
      the value of the onShown property
      Since:
      10
      See Also:
    • onHidingProperty

      public final ObjectProperty<EventHandler<Event>> onHidingProperty()
      Called just prior to the ContextMenu being hidden.
      Returns:
      the on hiding property
      Since:
      10
      See Also:
    • setOnHiding

      public final void setOnHiding(EventHandler<Event> value)
      Sets the value of the onHiding property.
      Property description:
      Called just prior to the ContextMenu being hidden.
      Parameters:
      value - the value for the onHiding property
      Since:
      10
      See Also:
    • getOnHiding

      public final EventHandler<Event> getOnHiding()
      Gets the value of the onHiding property.
      Property description:
      Called just prior to the ContextMenu being hidden.
      Returns:
      the value of the onHiding property
      Since:
      10
      See Also:
    • onHiddenProperty

      public final ObjectProperty<EventHandler<Event>> onHiddenProperty()
      Called just after the ContextMenu has been hidden.
      Returns:
      the on hidden property
      Since:
      10
      See Also:
    • setOnHidden

      public final void setOnHidden(EventHandler<Event> value)
      Sets the value of the onHidden property.
      Property description:
      Called just after the ContextMenu has been hidden.
      Parameters:
      value - the value for the onHidden property
      Since:
      10
      See Also:
    • getOnHidden

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

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

      public void hide()
      Hides the ContextMenu.
      See Also:
    • fire

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