Class MenuButton
- All Implemented Interfaces:
-
Styleable,EventTarget,Skinnable
- Direct Known Subclasses:
SplitMenuButton
public class MenuButton
extends ButtonBase 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
Property Summary
| Type | Property | Description |
|---|---|---|
ObjectProperty<EventHandler<Event>> | onHidden | Called just after the ContextMenu has been hidden. |
ObjectProperty<EventHandler<Event>> | onHiding | Called just prior to the ContextMenu being hidden. |
ObjectProperty<EventHandler<Event>> | onShowing | Called just prior to the ContextMenu being shown. |
ObjectProperty<EventHandler<Event>> | onShown | Called just after the ContextMenu is shown. |
ObjectProperty<Side> | popupSide | Indicates on which side the ContextMenu should open in relation to the MenuButton. |
ReadOnlyBooleanProperty | showing | Indicates whether the ContextMenu is currently visible. |
Properties declared in class javafx.scene.control.ButtonBase
armed, onAction
Properties declared in class javafx.scene.control.Labeled
alignment, contentDisplay, ellipsisString, font, graphic, graphicTextGap, labelPadding, lineSpacing, mnemonicParsing, textAlignment, textFill, textOverrun, text, underline, wrapText
Properties declared in class javafx.scene.control.Control
contextMenu, skin, tooltip
Properties declared in class javafx.scene.layout.Region
background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width
Properties declared in class javafx.scene.Parent
needsLayout
Properties declared in class javafx.scene.Node
accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, hover, id, inputMethodRequests, layoutBounds, layoutX, layoutY, localToParentTransform, localToSceneTransform, managed, mouseTransparent, nodeOrientation, onContextMenuRequested, onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, onMouseDragEntered, onMouseDragExited, onMouseDragged, onMouseDragOver, onMouseDragReleased, onMouseEntered, onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onRotate, onRotationFinished, onRotationStarted, onScrollFinished, onScroll, onScrollStarted, onSwipeDown, onSwipeLeft, onSwipeRight, onSwipeUp, onTouchMoved, onTouchPressed, onTouchReleased, onTouchStationary, onZoomFinished, onZoom, onZoomStarted, opacity, parent, pickOnBounds, pressed, rotate, rotationAxis, scaleX, scaleY, scaleZ, scene, style, translateX, translateY, translateZ, viewOrder, visible
Field Summary
| Modifier and Type | Field | Description |
|---|---|---|
static EventType<Event> | ON_HIDDEN | Called when the MenuButton popup has been hidden. |
static EventType<Event> | ON_HIDING | Called when the MenuButton popup will be hidden. |
static EventType<Event> | ON_SHOWING | Called prior to the MenuButton showing its popup after the user has clicked or otherwise interacted with the MenuButton. |
static EventType<Event> | ON_SHOWN | Called after the MenuButton has shown its popup. |
Fields declared in class javafx.scene.layout.Region
USE_COMPUTED_SIZE, USE_PREF_SIZE
Fields declared in class javafx.scene.Node
BASELINE_OFFSET_SAME_AS_HEIGHT
Constructor Summary
| Constructor | Description |
|---|---|
MenuButton() | Creates a new empty menu button. |
MenuButton(String text) | Creates a new empty menu button with the given text to display on the button. |
MenuButton(String text,
Node graphic) | Creates a new empty menu button with the given text and graphic to display on the button. |
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. |
Method Summary
| Modifier and Type | Method | Description |
|---|---|---|
void | fire() | This has no impact. |
ObservableList<MenuItem> | getItems() | The items to show within this buttons menu. |
EventHandler<Event> | getOnHidden() | Gets the value of the property onHidden. |
EventHandler<Event> | getOnHiding() | Gets the value of the property onHiding. |
EventHandler<Event> | getOnShowing() | Gets the value of the property onShowing. |
EventHandler<Event> | getOnShown() | Gets the value of the property onShown. |
Side | getPopupSide() | Gets the value of the property popupSide. |
void | hide() | Hides the ContextMenu. |
boolean | isShowing() | Gets the value of the property showing. |
ObjectProperty<EventHandler<Event>> | onHiddenProperty() | Called just after the ContextMenu has been hidden. |
ObjectProperty<EventHandler<Event>> | onHidingProperty() | Called just prior to the ContextMenu being hidden. |
ObjectProperty<EventHandler<Event>> | onShowingProperty() | Called just prior to the ContextMenu being shown. |
ObjectProperty<EventHandler<Event>> | onShownProperty() | Called just after the ContextMenu is shown. |
ObjectProperty<Side> | popupSideProperty() | Indicates on which side the ContextMenu should open in relation to the MenuButton. |
void | setOnHidden(EventHandler<Event> value) | Sets the value of the property onHidden. |
void | setOnHiding(EventHandler<Event> value) | Sets the value of the property onHiding. |
void | setOnShowing(EventHandler<Event> value) | Sets the value of the property onShowing. |
void | setOnShown(EventHandler<Event> value) | Sets the value of the property onShown. |
void | setPopupSide(Side value) | Sets the value of the property popupSide. |
void | show() | Shows the ContextMenu, assuming this MenuButton is not disabled. |
ReadOnlyBooleanProperty | showingProperty() | Indicates whether the ContextMenu is currently visible. |
Methods declared in class javafx.scene.control.ButtonBase
arm, armedProperty, disarm, getOnAction, isArmed, onActionProperty, setOnAction
Methods declared in class javafx.scene.control.Labeled
alignmentProperty, contentDisplayProperty, ellipsisStringProperty, fontProperty, getAlignment, getClassCssMetaData, getContentBias, getContentDisplay, getControlCssMetaData, getEllipsisString, getFont, getGraphic, getGraphicTextGap, getInitialAlignment, getLabelPadding, getLineSpacing, getText, getTextAlignment, getTextFill, getTextOverrun, graphicProperty, graphicTextGapProperty, isMnemonicParsing, isUnderline, isWrapText, labelPaddingProperty, lineSpacingProperty, mnemonicParsingProperty, setAlignment, setContentDisplay, setEllipsisString, setFont, setGraphic, setGraphicTextGap, setLineSpacing, setMnemonicParsing, setText, setTextAlignment, setTextFill, setTextOverrun, setUnderline, setWrapText, textAlignmentProperty, textFillProperty, textOverrunProperty, textProperty, underlineProperty, wrapTextProperty
Methods declared in class javafx.scene.control.Control
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, contextMenuProperty, createDefaultSkin, getContextMenu, getCssMetaData, getInitialFocusTraversable, getTooltip, isResizable, setContextMenu, setTooltip, skinProperty, tooltipProperty
Methods declared in class javafx.scene.layout.Region
backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, computePrefHeight, computePrefWidth, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, isScaleShape, isSnapToPixel, layoutInArea, layoutInArea, layoutInArea, layoutInArea, maxHeight, maxHeightProperty, maxWidth, maxWidthProperty, minHeight, minHeightProperty, minWidth, minWidthProperty, opaqueInsetsProperty, paddingProperty, positionInArea, positionInArea, prefHeight, prefHeightProperty, prefWidth, prefWidthProperty, resize, scaleShapeProperty, setBackground, setBorder, setCacheShape, setCenterShape, setHeight, setMaxHeight, setMaxSize, setMaxWidth, setMinHeight, setMinSize, setMinWidth, setOpaqueInsets, setPadding, setPrefHeight, setPrefSize, setPrefWidth, setScaleShape, setShape, setSnapToPixel, setWidth, shapeProperty, snappedBottomInset, snappedLeftInset, snappedRightInset, snappedTopInset, snapPosition, snapPositionX, snapPositionY, snapSize, snapSizeX, snapSizeY, snapSpace, snapSpaceX, snapSpaceY, snapToPixelProperty, widthProperty
Methods declared in class javafx.scene.Parent
getBaselineOffset, getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, layoutChildren, needsLayoutProperty, requestLayout, requestParentLayout, setNeedsLayout, updateBounds
Methods declared in class javafx.scene.Node
accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, addEventFilter, addEventHandler, applyCss, autosize, blendModeProperty, boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, cacheHintProperty, cacheProperty, clipProperty, computeAreaInScreen, contains, contains, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, executeAccessibleAction, fireEvent, focusedProperty, focusTraversableProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, getInputMethodRequests, getLayoutBounds, getLayoutX, getLayoutY, getLocalToParentTransform, getLocalToSceneTransform, getNodeOrientation, getOnContextMenuRequested, getOnDragDetected, getOnDragDone, getOnDragDropped, getOnDragEntered, getOnDragExited, getOnDragOver, getOnInputMethodTextChanged, getOnKeyPressed, getOnKeyReleased, getOnKeyTyped, getOnMouseClicked, getOnMouseDragEntered, getOnMouseDragExited, getOnMouseDragged, getOnMouseDragOver, getOnMouseDragReleased, getOnMouseEntered, getOnMouseExited, getOnMouseMoved, getOnMousePressed, getOnMouseReleased, getOnRotate, getOnRotationFinished, getOnRotationStarted, getOnScroll, getOnScrollFinished, getOnScrollStarted, getOnSwipeDown, getOnSwipeLeft, getOnSwipeRight, getOnSwipeUp, getOnTouchMoved, getOnTouchPressed, getOnTouchReleased, getOnTouchStationary, getOnZoom, getOnZoomFinished, getOnZoomStarted, getOpacity, getParent, getProperties, getPseudoClassStates, getRotate, getRotationAxis, getScaleX, getScaleY, getScaleZ, getScene, getStyle, getStyleableParent, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, getViewOrder, hasProperties, hoverProperty, idProperty, inputMethodRequestsProperty, intersects, intersects, isCache, isDisable, isDisabled, isFocused, isFocusTraversable, isHover, isManaged, isMouseTransparent, isPickOnBounds, isPressed, isVisible, layoutBoundsProperty, layoutXProperty, layoutYProperty, localToParent, localToParent, localToParent, localToParent, localToParent, localToParentTransformProperty, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToSceneTransformProperty, localToScreen, localToScreen, localToScreen, localToScreen, localToScreen, lookup, lookupAll, managedProperty, mouseTransparentProperty, nodeOrientationProperty, notifyAccessibleAttributeChanged, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, onMouseDragEnteredProperty, onMouseDragExitedProperty, onMouseDraggedProperty, onMouseDragOverProperty, onMouseDragReleasedProperty, onMouseEnteredProperty, onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, onTouchPressedProperty, onTouchReleasedProperty, onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, onZoomStartedProperty, opacityProperty, parentProperty, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, pickOnBoundsProperty, pressedProperty, pseudoClassStateChanged, queryAccessibleAttribute, relocate, removeEventFilter, removeEventHandler, requestFocus, resizeRelocate, rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, scaleZProperty, sceneProperty, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, screenToLocal, screenToLocal, screenToLocal, setAccessibleHelp, setAccessibleRole, setAccessibleRoleDescription, setAccessibleText, setBlendMode, setCache, setCacheHint, setClip, setCursor, setDepthTest, setDisable, setDisabled, setEffect, setEventDispatcher, setEventHandler, setFocused, setFocusTraversable, setHover, setId, setInputMethodRequests, setLayoutX, setLayoutY, setManaged, setMouseTransparent, setNodeOrientation, setOnContextMenuRequested, setOnDragDetected, setOnDragDone, setOnDragDropped, setOnDragEntered, setOnDragExited, setOnDragOver, setOnInputMethodTextChanged, setOnKeyPressed, setOnKeyReleased, setOnKeyTyped, setOnMouseClicked, setOnMouseDragEntered, setOnMouseDragExited, setOnMouseDragged, setOnMouseDragOver, setOnMouseDragReleased, setOnMouseEntered, setOnMouseExited, setOnMouseMoved, setOnMousePressed, setOnMouseReleased, setOnRotate, setOnRotationFinished, setOnRotationStarted, setOnScroll, setOnScrollFinished, setOnScrollStarted, setOnSwipeDown, setOnSwipeLeft, setOnSwipeRight, setOnSwipeUp, setOnTouchMoved, setOnTouchPressed, setOnTouchReleased, setOnTouchStationary, setOnZoom, setOnZoomFinished, setOnZoomStarted, setOpacity, setPickOnBounds, setPressed, setRotate, setRotationAxis, setScaleX, setScaleY, setScaleZ, setStyle, setTranslateX, setTranslateY, setTranslateZ, setUserData, setViewOrder, setVisible, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, toString, translateXProperty, translateYProperty, translateZProperty, usesMirroring, viewOrderProperty, visibleProperty
Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods declared in interface javafx.css.Styleable
getStyleableNode, getStyleClass
Property Details
showing
public final ReadOnlyBooleanProperty showingProperty
ContextMenu is currently visible.- See Also:
isShowing()
popupSide
public final ObjectProperty<Side> popupSideProperty
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)
onShowing
public final ObjectProperty<EventHandler<Event>> onShowingProperty
ContextMenu being shown.- Since:
- 10
- See Also:
-
getOnShowing(),setOnShowing(EventHandler)
onShown
public final ObjectProperty<EventHandler<Event>> onShownProperty
ContextMenu is shown.- Since:
- 10
- See Also:
-
getOnShown(),setOnShown(EventHandler)
onHiding
public final ObjectProperty<EventHandler<Event>> onHidingProperty
ContextMenu being hidden.- Since:
- 10
- See Also:
-
getOnHiding(),setOnHiding(EventHandler)
onHidden
public final ObjectProperty<EventHandler<Event>> onHiddenProperty
ContextMenu has been hidden.- Since:
- 10
- See Also:
-
getOnHidden(),setOnHidden(EventHandler)
Field Details
ON_SHOWING
public static final EventType<Event> ON_SHOWING
- Since:
- JavaFX 8u60
ON_SHOWN
public static final EventType<Event> ON_SHOWN
- Since:
- JavaFX 8u60
ON_HIDING
public static final EventType<Event> ON_HIDING
- Since:
- JavaFX 8u60
ON_HIDDEN
public static final EventType<Event> ON_HIDDEN
- Since:
- JavaFX 8u60
Constructor Details
MenuButton
public MenuButton()
Labeled.setText(String), Labeled.setGraphic(Node) and getItems() to set the content.MenuButton
public MenuButton(String text)
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)
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)
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()
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()
- Property description:
- Indicates whether the
ContextMenuis currently visible.
showingProperty
public final ReadOnlyBooleanProperty showingProperty()
ContextMenu is currently visible.- See Also:
isShowing()
setPopupSide
public final void setPopupSide(Side value)
- Property description:
- Indicates on which side the
ContextMenushould 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 changepopupSidetoSide.RIGHTso that the popup will appear to the right of the MenuButton. - Default value:
Side.BOTTOM
getPopupSide
public final Side getPopupSide()
- Property description:
- Indicates on which side the
ContextMenushould 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 changepopupSidetoSide.RIGHTso that the popup will appear to the right of the MenuButton. - Default value:
Side.BOTTOM
popupSideProperty
public final ObjectProperty<Side> popupSideProperty()
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()
ContextMenu being shown.- Since:
- 10
- See Also:
-
getOnShowing(),setOnShowing(EventHandler)
setOnShowing
public final void setOnShowing(EventHandler<Event> value)
- Property description:
- Called just prior to the
ContextMenubeing shown. - Since:
- 10
getOnShowing
public final EventHandler<Event> getOnShowing()
- Property description:
- Called just prior to the
ContextMenubeing shown. - Since:
- 10
onShownProperty
public final ObjectProperty<EventHandler<Event>> onShownProperty()
ContextMenu is shown.- Since:
- 10
- See Also:
-
getOnShown(),setOnShown(EventHandler)
setOnShown
public final void setOnShown(EventHandler<Event> value)
- Property description:
- Called just after the
ContextMenuis shown. - Since:
- 10
getOnShown
public final EventHandler<Event> getOnShown()
- Property description:
- Called just after the
ContextMenuis shown. - Since:
- 10
onHidingProperty
public final ObjectProperty<EventHandler<Event>> onHidingProperty()
ContextMenu being hidden.- Since:
- 10
- See Also:
-
getOnHiding(),setOnHiding(EventHandler)
setOnHiding
public final void setOnHiding(EventHandler<Event> value)
- Property description:
- Called just prior to the
ContextMenubeing hidden. - Since:
- 10
getOnHiding
public final EventHandler<Event> getOnHiding()
- Property description:
- Called just prior to the
ContextMenubeing hidden. - Since:
- 10
onHiddenProperty
public final ObjectProperty<EventHandler<Event>> onHiddenProperty()
ContextMenu has been hidden.- Since:
- 10
- See Also:
-
getOnHidden(),setOnHidden(EventHandler)
setOnHidden
public final void setOnHidden(EventHandler<Event> value)
- Property description:
- Called just after the
ContextMenuhas been hidden. - Since:
- 10
getOnHidden
public final EventHandler<Event> getOnHidden()
- Property description:
- Called just after the
ContextMenuhas been hidden. - Since:
- 10
show
public void show()
ContextMenu, assuming this MenuButton is not disabled.- See Also:
-
Node.isDisabled(),isShowing()
hide
public void hide()
ContextMenu.- See Also:
isShowing()
fire
public void fire()
- Specified by:
-
firein classButtonBase
© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.