- java.lang.Object
-
- javafx.scene.control.MenuItem
-
- javafx.scene.control.Menu
-
- All Implemented Interfaces:
Styleable
,EventTarget
@DefaultProperty("items") public class Menu extends MenuItem
A popup menu of actionable items which is displayed to the user only upon request. When a menu is visible, in most use cases, the user can select one menu item before the menu goes back to its hidden state. This means the menu is a good place to put important functionality that does not necessarily need to be visible at all times to the user.
Menus are typically placed in a
MenuBar
, or as a submenu of another Menu. If the intention is to offer a context menu when the user right-clicks in a certain area of their user interface, then this is the wrong control to use. This is because when Menu is added to the scenegraph, it has a visual representation that will result in it appearing on screen. Instead,ContextMenu
should be used in this circumstance.Creating a Menu and inserting it into a MenuBar is easy, as shown below:
final Menu menu1 = new Menu("File"); MenuBar menuBar = new MenuBar(); menuBar.getMenus().add(menu1);
A Menu is a subclass of
MenuItem
which means that it can be inserted into a Menu'sitems
ObservableList, resulting in a submenu being created:MenuItem menu12 = new MenuItem("Open"); menu1.getItems().add(menu12);
The items ObservableList allows for any
MenuItem
type to be inserted, including its subclassesMenu
,MenuItem
,RadioMenuItem
,CheckMenuItem
,CustomMenuItem
andSeparatorMenuItem
. In order to insert an arbitraryNode
to a Menu, a CustomMenuItem can be used. One exception to this general rule is thatSeparatorMenuItem
could be used for inserting a separator.
-
-
Property Summary
Properties Type Property Description ObjectProperty<EventHandler<Event>>
onHidden
Called just after theContextMenu
has been hidden.ObjectProperty<EventHandler<Event>>
onHiding
Called just prior to theContextMenu
being hidden.ObjectProperty<EventHandler<Event>>
onShowing
Called just prior to theContextMenu
being shown, even if the menu has no items to show.ObjectProperty<EventHandler<Event>>
onShown
Called just after theContextMenu
is shown.ReadOnlyBooleanProperty
showing
Indicates whether theContextMenu
is currently visible.-
Properties declared in class javafx.scene.control.MenuItem
accelerator, disable, graphic, id, mnemonicParsing, onAction, onMenuValidation, parentMenu, parentPopup, style, text, visible
-
-
Field Summary
Fields Modifier and Type Field Description static EventType<Event>
ON_HIDDEN
Called when the contextMenu for this menu is hidden.static EventType<Event>
ON_HIDING
Called when the contextMenu for this menu will be hidden.static EventType<Event>
ON_SHOWING
Called when the contextMenu for this menu will be shown.static EventType<Event>
ON_SHOWN
Called when the contextMenu for this menu shows.-
Fields declared in class javafx.scene.control.MenuItem
MENU_VALIDATION_EVENT
-
-
Constructor Summary
Constructors Constructor Description Menu()
Constructs a Menu with an empty string for its display text.Menu(String text)
Constructs a Menu and sets the display text with the specified text.Menu(String text, Node graphic)
Constructs a Menu and sets the display text with the specified text and sets the graphicNode
to the given node.Menu(String text, Node graphic, MenuItem... items)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ObservableList<MenuItem>
getItems()
The items to show within this 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.void
hide()
Hides theContextMenu
if it was previously showing, and any showing submenus.boolean
isShowing()
Gets the value of the property showing.ObjectProperty<EventHandler<Event>>
onHiddenProperty()
Called just after theContextMenu
has been hidden.ObjectProperty<EventHandler<Event>>
onHidingProperty()
Called just prior to theContextMenu
being hidden.ObjectProperty<EventHandler<Event>>
onShowingProperty()
Called just prior to theContextMenu
being shown, even if the menu has no items to show.ObjectProperty<EventHandler<Event>>
onShownProperty()
Called just after theContextMenu
is shown.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
show()
If the Menu is not disabled and theContextMenu
is not already showing, then this will cause theContextMenu
to be shown.ReadOnlyBooleanProperty
showingProperty()
Indicates whether theContextMenu
is currently visible.-
Methods declared in interface javafx.event.EventTarget
buildEventDispatchChain
-
Methods declared in class javafx.scene.control.MenuItem
acceleratorProperty, addEventHandler, disableProperty, fire, getAccelerator, getGraphic, getOnAction, getOnMenuValidation, getParentMenu, getParentPopup, getProperties, getPseudoClassStates, getStyleableParent, getStyleClass, getText, getTypeSelector, getUserData, graphicProperty, idProperty, isDisable, isMnemonicParsing, isVisible, mnemonicParsingProperty, onActionProperty, onMenuValidationProperty, parentMenuProperty, parentPopupProperty, removeEventHandler, setAccelerator, setDisable, setGraphic, setId, setMnemonicParsing, setOnAction, setOnMenuValidation, setParentMenu, setParentPopup, setStyle, setText, setUserData, setVisible, styleProperty, textProperty, visibleProperty
-
Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods declared in interface javafx.css.Styleable
getCssMetaData, getId, getStyle, getStyleableNode
-
-
-
-
Property Detail
-
showing
public final ReadOnlyBooleanProperty showingProperty
Indicates whether theContextMenu
is currently visible.- Default value:
- false
- See Also:
isShowing()
-
onShowing
public final ObjectProperty<EventHandler<Event>> onShowingProperty
Called just prior to theContextMenu
being shown, even if the menu has no items to show. Note however that this won't be called if the menu does not have a valid anchor node.- See Also:
getOnShowing()
,setOnShowing(EventHandler)
-
onShown
public final ObjectProperty<EventHandler<Event>> onShownProperty
Called just after theContextMenu
is shown.- See Also:
getOnShown()
,setOnShown(EventHandler)
-
onHiding
public final ObjectProperty<EventHandler<Event>> onHidingProperty
Called just prior to theContextMenu
being hidden.- See Also:
getOnHiding()
,setOnHiding(EventHandler)
-
onHidden
public final ObjectProperty<EventHandler<Event>> onHiddenProperty
Called just after theContextMenu
has been hidden.- See Also:
getOnHidden()
,setOnHidden(EventHandler)
-
-
Field Detail
-
ON_SHOWING
public static final EventType<Event> ON_SHOWING
Called when the contextMenu for this menu will be shown. However if the contextMenu is empty then this will not be called.
-
ON_SHOWN
public static final EventType<Event> ON_SHOWN
Called when the contextMenu for this menu shows. However if the contextMenu is empty then this will not be called.
-
ON_HIDING
public static final EventType<Event> ON_HIDING
Called when the contextMenu for this menu will be hidden. However if the contextMenu is empty then this will not be called.
-
-
Constructor Detail
-
Menu
public Menu()
Constructs a Menu with an empty string for its display text.- Since:
- JavaFX 2.2
-
Menu
public Menu(String text)
Constructs a Menu and sets the display text with the specified text.- Parameters:
text
- the text to display on the menu button
-
Menu
public Menu(String text, Node graphic)
Constructs a Menu and sets the display text with the specified text and sets the graphicNode
to the given node.- Parameters:
text
- the text to display on the menu buttongraphic
- the graphic to display on the menu button
-
Menu
public Menu(String text, Node graphic, MenuItem... items)
Constructs a Menu and sets the display text with the specified text, the graphicNode
to the given node, 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
-
isShowing
public final boolean isShowing()
Gets the value of the property showing.- Property description:
- Indicates whether the
ContextMenu
is currently visible. - Default value:
- false
-
showingProperty
public final ReadOnlyBooleanProperty showingProperty()
Indicates whether theContextMenu
is currently visible.- Default value:
- false
- See Also:
isShowing()
-
onShowingProperty
public final ObjectProperty<EventHandler<Event>> onShowingProperty()
Called just prior to theContextMenu
being shown, even if the menu has no items to show. Note however that this won't be called if the menu does not have a valid anchor node.- 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, even if the menu has no items to show. Note however that this won't be called if the menu does not have a valid anchor node.
-
getOnShowing
public final EventHandler<Event> getOnShowing()
Gets the value of the property onShowing.- Property description:
- Called just prior to the
ContextMenu
being shown, even if the menu has no items to show. Note however that this won't be called if the menu does not have a valid anchor node.
-
onShownProperty
public final ObjectProperty<EventHandler<Event>> onShownProperty()
Called just after theContextMenu
is shown.- 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.
-
getOnShown
public final EventHandler<Event> getOnShown()
Gets the value of the property onShown.- Property description:
- Called just after the
ContextMenu
is shown.
-
onHidingProperty
public final ObjectProperty<EventHandler<Event>> onHidingProperty()
Called just prior to theContextMenu
being hidden.- 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.
-
getOnHiding
public final EventHandler<Event> getOnHiding()
Gets the value of the property onHiding.- Property description:
- Called just prior to the
ContextMenu
being hidden.
-
onHiddenProperty
public final ObjectProperty<EventHandler<Event>> onHiddenProperty()
Called just after theContextMenu
has been hidden.- 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.
-
getOnHidden
public final EventHandler<Event> getOnHidden()
Gets the value of the property onHidden.- Property description:
- Called just after the
ContextMenu
has been hidden.
-
getItems
public final ObservableList<MenuItem> getItems()
The items to show within this menu. If this ObservableList is modified at runtime, the Menu will update as expected.- Returns:
- the list of items
-
show
public void show()
If the Menu is not disabled and theContextMenu
is not already showing, then this will cause theContextMenu
to be shown.
-
hide
public void hide()
Hides theContextMenu
if it was previously showing, and any showing submenus. If this menu is not showing, then invoking this function has no effect.
-
-