-
- 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 aContextMenu
. A MenuButton shares a very similar API to theMenu
control, insofar that you set the items that should be shown in theitems
ObservableList, and there is aLabeled.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 fromMenuItem
. There are several useful subclasses ofMenuItem
includingRadioMenuItem
,CheckMenuItem
,Menu
,SeparatorMenuItem
andCustomMenuItem
.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, theContextMenu
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
Properties Type Property Description ObjectProperty<Side>
popupSide
Indicates on which side theContextMenu
should open in relation to the MenuButton.ReadOnlyBooleanProperty
showing
Indicates whether theContextMenu
is currently visible.-
Properties inherited from class javafx.scene.control.ButtonBase
armed, onAction
-
Properties inherited from class javafx.scene.control.Control
contextMenu, skin, tooltip
-
Properties inherited from class javafx.scene.control.Labeled
alignment, contentDisplay, ellipsisString, font, graphic, graphicTextGap, labelPadding, lineSpacing, mnemonicParsing, textAlignment, textFill, textOverrun, text, underline, wrapText
-
Properties inherited from 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
-
Properties inherited from class javafx.scene.Parent
needsLayout
-
Properties inherited from class javafx.scene.layout.Region
background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width
-
-
Field Summary
Fields 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 inherited from class javafx.scene.Node
BASELINE_OFFSET_SAME_AS_HEIGHT
-
Fields inherited from class javafx.scene.layout.Region
USE_COMPUTED_SIZE, USE_PREF_SIZE
-
-
Constructor Summary
Constructors 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 theitems
list.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Skin<?>
createDefaultSkin()
Create a new instance of the default skin for this control.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.void
fire()
This has no impact.ObservableList<MenuItem>
getItems()
The items to show within this buttons menu.Side
getPopupSide()
Gets the value of the property popupSide.void
hide()
Hides theContextMenu
.boolean
isShowing()
Gets the value of the property showing.ObjectProperty<Side>
popupSideProperty()
Indicates on which side theContextMenu
should open in relation to the MenuButton.void
setPopupSide(Side value)
Sets the value of the property popupSide.void
show()
Shows theContextMenu
, assuming this MenuButton is not disabled.ReadOnlyBooleanProperty
showingProperty()
Indicates whether theContextMenu
is currently visible.-
Methods inherited from class javafx.scene.control.ButtonBase
arm, armedProperty, disarm, getOnAction, isArmed, onActionProperty, setOnAction
-
Methods inherited from class javafx.scene.control.Control
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, getBaselineOffset, getContextMenu, getCssMetaData, getInitialFocusTraversable, getSkin, getTooltip, isResizable, layoutChildren, queryAccessibleAttribute, setContextMenu, setSkin, setTooltip, skinProperty, tooltipProperty
-
Methods inherited from 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, toString, underlineProperty, wrapTextProperty
-
Methods inherited from 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, 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, getStyleClass, 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, 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, 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, translateXProperty, translateYProperty, translateZProperty, usesMirroring, viewOrderProperty, visibleProperty
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from class javafx.scene.Parent
getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, requestLayout, requestParentLayout, setNeedsLayout, updateBounds
-
Methods inherited from class javafx.scene.layout.Region
backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, 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 inherited from interface javafx.css.Styleable
getStyleableNode
-
-
-
-
Property Detail
-
showing
public final ReadOnlyBooleanProperty showingProperty
Indicates whether theContextMenu
is currently visible.- See Also:
isShowing()
-
popupSide
public final ObjectProperty<Side> popupSideProperty
Indicates on which side theContextMenu
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 changepopupSide
toSide.RIGHT
so that the popup will appear to the right of the MenuButton.- Default value:
Side.BOTTOM
- See Also:
getPopupSide()
,setPopupSide(Side)
-
-
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
-
-
Constructor Detail
-
MenuButton
public MenuButton()
Creates a new empty menu button. UseLabeled.setText(String)
,Labeled.setGraphic(Node)
andgetItems()
to set the content.
-
MenuButton
public MenuButton(String text)
Creates a new empty menu button with the given text to display on the button. UseLabeled.setGraphic(Node)
andgetItems()
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. UsegetItems()
to set the content.- Parameters:
text
- the text to display on the menu buttongraphic
- 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 theitems
list.- Parameters:
text
- the text to display on the menu buttongraphic
- the graphic to display on the menu buttonitems
- 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 courseMenu
, 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 theContextMenu
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 changepopupSide
toSide.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 changepopupSide
toSide.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 theContextMenu
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 changepopupSide
toSide.RIGHT
so that the popup will appear to the right of the MenuButton.- Default value:
Side.BOTTOM
- See Also:
getPopupSide()
,setPopupSide(Side)
-
show
public void show()
Shows theContextMenu
, assuming this MenuButton is not disabled.- See Also:
Node.isDisabled()
,isShowing()
-
hide
public void hide()
Hides theContextMenu
.- See Also:
isShowing()
-
fire
public void fire()
This has no impact.- Specified by:
fire
in classButtonBase
-
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 withsetSkin(...)
.- Overrides:
createDefaultSkin
in classControl
- 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 classButtonBase
- Parameters:
action
- the action to executeparameters
- optional list of parameters- See Also:
AccessibleAction
-
-