Class MenuItem

java.lang.Object
javafx.scene.control.MenuItem
All Implemented Interfaces:
Styleable, EventTarget
Direct Known Subclasses:
CheckMenuItem, CustomMenuItem, Menu, RadioMenuItem

@IDProperty("id") public class MenuItem extends Object implements EventTarget, Styleable

MenuItem is intended to be used in conjunction with Menu to provide options to users. MenuItem serves as the base class for the bulk of JavaFX menus API. It has a display text property, as well as an optional graphic node that can be set on it. The accelerator property enables accessing the associated action in one keystroke. Also, as with the Button control, by using the setOnAction(javafx.event.EventHandler<javafx.event.ActionEvent>) method, you can have an instance of MenuItem perform any action you wish.

Note: Whilst any size of graphic can be inserted into a MenuItem, the most commonly used size in most applications is 16x16 pixels. This is the recommended graphic dimension to use if you're using the default style provided by JavaFX.

To create a MenuItem is simple:

MenuItem menuItem = new MenuItem("Open");
menuItem.setOnAction(e -> System.out.println("Opening Database Connection..."));
Circle graphic = new Circle(8);
graphic.setFill(Color.GREEN);
menuItem.setGraphic(graphic);

Menu menu = new Menu("File");
menu.getItems().add(menuItem);
MenuBar menuBar = new MenuBar(menu);
Image of the MenuItem control
Since:
JavaFX 2.0
See Also:
  • Property Details

  • Field Details

  • Constructor Details

    • MenuItem

      public MenuItem()
      Constructs a MenuItem with no display text.
    • MenuItem

      public MenuItem(String text)
      Constructs a MenuItem and sets the display text with the specified text
      Parameters:
      text - the display text
      See Also:
    • MenuItem

      public MenuItem(String text, Node graphic)
      Constructor s MenuItem and sets the display text with the specified text and sets the graphic Node to the given node.
      Parameters:
      text - the display text
      graphic - the graphic node
      See Also:
  • Method Details

    • setId

      public final void setId(String value)
      Sets the value of the id property.
      Property description:
      The id of this MenuItem. This simple string identifier is useful for finding a specific MenuItem within the scene graph.
      Parameters:
      value - the value for the id property
      See Also:
    • getId

      public final String getId()
      Gets the value of the id property.
      Specified by:
      getId in interface Styleable
      Property description:
      The id of this MenuItem. This simple string identifier is useful for finding a specific MenuItem within the scene graph.
      Returns:
      the value of the id property
      See Also:
    • idProperty

      public final StringProperty idProperty()
      The id of this MenuItem. This simple string identifier is useful for finding a specific MenuItem within the scene graph.
      Returns:
      the id property
      See Also:
    • setStyle

      public final void setStyle(String value)
      Sets the value of the style property.
      Property description:
      A string representation of the CSS style associated with this specific MenuItem. This is analogous to the "style" attribute of an HTML element. Note that, like the HTML style attribute, this variable contains style properties and values and not the selector portion of a style rule.
      Parameters:
      value - the value for the style property
      See Also:
    • getStyle

      public final String getStyle()
      Gets the value of the style property.
      Specified by:
      getStyle in interface Styleable
      Property description:
      A string representation of the CSS style associated with this specific MenuItem. This is analogous to the "style" attribute of an HTML element. Note that, like the HTML style attribute, this variable contains style properties and values and not the selector portion of a style rule.
      Returns:
      the value of the style property
      See Also:
    • styleProperty

      public final StringProperty styleProperty()
      A string representation of the CSS style associated with this specific MenuItem. This is analogous to the "style" attribute of an HTML element. Note that, like the HTML style attribute, this variable contains style properties and values and not the selector portion of a style rule.
      Returns:
      the style property
      See Also:
    • setParentMenu

      protected final void setParentMenu(Menu value)
      Sets the value of the parentMenu property.
      Property description:
      This is the Menu in which this MenuItem exists. It is possible for an instance of this class to not have a parentMenu - this means that this instance is either:
      • Not yet associated with its parentMenu.
      • A 'root' Menu (i.e. it is a context menu, attached directly to a MenuBar, MenuButton, or any of the other controls that use Menu internally.
      Parameters:
      value - the value for the parentMenu property
      See Also:
    • getParentMenu

      public final Menu getParentMenu()
      Gets the value of the parentMenu property.
      Property description:
      This is the Menu in which this MenuItem exists. It is possible for an instance of this class to not have a parentMenu - this means that this instance is either:
      • Not yet associated with its parentMenu.
      • A 'root' Menu (i.e. it is a context menu, attached directly to a MenuBar, MenuButton, or any of the other controls that use Menu internally.
      Returns:
      the value of the parentMenu property
      See Also:
    • parentMenuProperty

      public final ReadOnlyObjectProperty<Menu> parentMenuProperty()
      This is the Menu in which this MenuItem exists. It is possible for an instance of this class to not have a parentMenu - this means that this instance is either:
      • Not yet associated with its parentMenu.
      • A 'root' Menu (i.e. it is a context menu, attached directly to a MenuBar, MenuButton, or any of the other controls that use Menu internally.
      Returns:
      the parentMenu property
      See Also:
    • setParentPopup

      protected final void setParentPopup(ContextMenu value)
      Sets the value of the parentPopup property.
      Property description:
      This is the ContextMenu in which this MenuItem exists.
      Parameters:
      value - the value for the parentPopup property
      See Also:
    • getParentPopup

      public final ContextMenu getParentPopup()
      Gets the value of the parentPopup property.
      Property description:
      This is the ContextMenu in which this MenuItem exists.
      Returns:
      the value of the parentPopup property
      See Also:
    • parentPopupProperty

      public final ReadOnlyObjectProperty<ContextMenu> parentPopupProperty()
      This is the ContextMenu in which this MenuItem exists.
      Returns:
      the parentPopup property
      See Also:
    • setText

      public final void setText(String value)
      Sets the value of the text property.
      Property description:
      The text to display in the MenuItem.
      Parameters:
      value - the value for the text property
      See Also:
    • getText

      public final String getText()
      Gets the value of the text property.
      Property description:
      The text to display in the MenuItem.
      Returns:
      the value of the text property
      See Also:
    • textProperty

      public final StringProperty textProperty()
      The text to display in the MenuItem.
      Returns:
      the text property
      See Also:
    • setGraphic

      public final void setGraphic(Node value)
      Sets the value of the graphic property.
      Property description:
      An optional graphic for the MenuItem. This will normally be an ImageView node, but there is no requirement for this to be the case.
      Parameters:
      value - the value for the graphic property
      See Also:
    • getGraphic

      public final Node getGraphic()
      Gets the value of the graphic property.
      Property description:
      An optional graphic for the MenuItem. This will normally be an ImageView node, but there is no requirement for this to be the case.
      Returns:
      the value of the graphic property
      See Also:
    • graphicProperty

      public final ObjectProperty<Node> graphicProperty()
      An optional graphic for the MenuItem. This will normally be an ImageView node, but there is no requirement for this to be the case.
      Returns:
      the graphic property
      See Also:
    • setOnAction

      public final void setOnAction(EventHandler<ActionEvent> value)
      Sets the value of the onAction property.
      Property description:
      The action, which is invoked whenever the MenuItem is fired. This may be due to the user clicking on the button with the mouse, or by a touch event, or by a key press, or if the developer programatically invokes the fire() method.
      Parameters:
      value - the value for the onAction property
      See Also:
    • getOnAction

      public final EventHandler<ActionEvent> getOnAction()
      Gets the value of the onAction property.
      Property description:
      The action, which is invoked whenever the MenuItem is fired. This may be due to the user clicking on the button with the mouse, or by a touch event, or by a key press, or if the developer programatically invokes the fire() method.
      Returns:
      the value of the onAction property
      See Also:
    • onActionProperty

      public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty()
      The action, which is invoked whenever the MenuItem is fired. This may be due to the user clicking on the button with the mouse, or by a touch event, or by a key press, or if the developer programatically invokes the fire() method.
      Returns:
      the onAction property
      See Also:
    • setOnMenuValidation

      public final void setOnMenuValidation(EventHandler<Event> value)
      Sets the value of the onMenuValidation property.
      Property description:
      The event handler that is associated with invocation of an accelerator for a MenuItem. This can happen when a key sequence for an accelerator is pressed. The event handler is also invoked when onShowing event handler is called.
      Parameters:
      value - the value for the onMenuValidation property
      Since:
      JavaFX 2.2
      See Also:
    • getOnMenuValidation

      public final EventHandler<Event> getOnMenuValidation()
      Gets the value of the onMenuValidation property.
      Property description:
      The event handler that is associated with invocation of an accelerator for a MenuItem. This can happen when a key sequence for an accelerator is pressed. The event handler is also invoked when onShowing event handler is called.
      Returns:
      the value of the onMenuValidation property
      Since:
      JavaFX 2.2
      See Also:
    • onMenuValidationProperty

      public final ObjectProperty<EventHandler<Event>> onMenuValidationProperty()
      The event handler that is associated with invocation of an accelerator for a MenuItem. This can happen when a key sequence for an accelerator is pressed. The event handler is also invoked when onShowing event handler is called.
      Returns:
      the onMenuValidation property
      Since:
      JavaFX 2.2
      See Also:
    • setDisable

      public final void setDisable(boolean value)
      Sets the value of the disable property.
      Property description:
      Sets the individual disabled state of this MenuItem. Setting disable to true will cause this MenuItem to become disabled.
      Parameters:
      value - the value for the disable property
      See Also:
    • isDisable

      public final boolean isDisable()
      Gets the value of the disable property.
      Property description:
      Sets the individual disabled state of this MenuItem. Setting disable to true will cause this MenuItem to become disabled.
      Returns:
      the value of the disable property
      See Also:
    • disableProperty

      public final BooleanProperty disableProperty()
      Sets the individual disabled state of this MenuItem. Setting disable to true will cause this MenuItem to become disabled.
      Returns:
      the disable property
      See Also:
    • setVisible

      public final void setVisible(boolean value)
      Sets the value of the visible property.
      Property description:
      Specifies whether this MenuItem should be rendered as part of the scene graph.
      Parameters:
      value - the value for the visible property
      See Also:
    • isVisible

      public final boolean isVisible()
      Gets the value of the visible property.
      Property description:
      Specifies whether this MenuItem should be rendered as part of the scene graph.
      Returns:
      the value of the visible property
      See Also:
    • visibleProperty

      public final BooleanProperty visibleProperty()
      Specifies whether this MenuItem should be rendered as part of the scene graph.
      Returns:
      the visible property
      See Also:
    • setAccelerator

      public final void setAccelerator(KeyCombination value)
      Sets the value of the accelerator property.
      Property description:
      The accelerator property enables accessing the associated action in one keystroke. It is a convenience offered to perform quickly a given action.
      Parameters:
      value - the value for the accelerator property
      See Also:
    • getAccelerator

      public final KeyCombination getAccelerator()
      Gets the value of the accelerator property.
      Property description:
      The accelerator property enables accessing the associated action in one keystroke. It is a convenience offered to perform quickly a given action.
      Returns:
      the value of the accelerator property
      See Also:
    • acceleratorProperty

      public final ObjectProperty<KeyCombination> acceleratorProperty()
      The accelerator property enables accessing the associated action in one keystroke. It is a convenience offered to perform quickly a given action.
      Returns:
      the accelerator property
      See Also:
    • setMnemonicParsing

      public final void setMnemonicParsing(boolean value)
      Sets the value of the mnemonicParsing property.
      Property description:
      MnemonicParsing property to enable/disable text parsing. If this is set to true, then the MenuItem text will be parsed to see if it contains the mnemonic parsing character '_'. When a mnemonic is detected the key combination will be determined based on the succeeding character, and the mnemonic added.

      The default value for MenuItem is true.

      Parameters:
      value - the value for the mnemonicParsing property
      See Also:
    • isMnemonicParsing

      public final boolean isMnemonicParsing()
      Gets the value of the mnemonicParsing property.
      Property description:
      MnemonicParsing property to enable/disable text parsing. If this is set to true, then the MenuItem text will be parsed to see if it contains the mnemonic parsing character '_'. When a mnemonic is detected the key combination will be determined based on the succeeding character, and the mnemonic added.

      The default value for MenuItem is true.

      Returns:
      the value of the mnemonicParsing property
      See Also:
    • mnemonicParsingProperty

      public final BooleanProperty mnemonicParsingProperty()
      MnemonicParsing property to enable/disable text parsing. If this is set to true, then the MenuItem text will be parsed to see if it contains the mnemonic parsing character '_'. When a mnemonic is detected the key combination will be determined based on the succeeding character, and the mnemonic added.

      The default value for MenuItem is true.

      Returns:
      the mnemonicParsing property
      See Also:
    • getStyleClass

      public ObservableList<String> getStyleClass()
      Description copied from interface: Styleable
      A list of String identifiers which can be used to logically group Nodes, specifically for an external style engine. This variable is analogous to the "class" attribute on an HTML element and, as such, each element of the list is a style class to which this Node belongs.
      Specified by:
      getStyleClass in interface Styleable
      Returns:
      a list of String identifiers which can be used to logically group Nodes, specifically for an external style engine
      See Also:
    • fire

      public void fire()
      Fires a new ActionEvent.
    • addEventHandler

      public <E extends Event> void addEventHandler(EventType<E> eventType, EventHandler<E> eventHandler)
      Registers an event handler to this MenuItem. The handler is called when the menu item receives an Event of the specified type during the bubbling phase of event delivery.
      Type Parameters:
      E - the specific event class of the handler
      Parameters:
      eventType - the type of the events to receive by the handler
      eventHandler - the handler to register
      Throws:
      NullPointerException - if the event type or handler is null
    • removeEventHandler

      public <E extends Event> void removeEventHandler(EventType<E> eventType, EventHandler<E> eventHandler)
      Unregisters a previously registered event handler from this MenuItem. One handler might have been registered for different event types, so the caller needs to specify the particular event type from which to unregister the handler.
      Type Parameters:
      E - the specific event class of the handler
      Parameters:
      eventType - the event type from which to unregister
      eventHandler - the handler to unregister
      Throws:
      NullPointerException - if the event type or handler is null
    • buildEventDispatchChain

      public EventDispatchChain buildEventDispatchChain(EventDispatchChain tail)
      Construct an event dispatch chain for this target. The event dispatch chain contains event dispatchers which might be interested in processing of events targeted at this EventTarget. This event target is not automatically added to the chain, so if it wants to process events, it needs to add an EventDispatcher for itself to the chain.

      In the case the event target is part of some hierarchy, the chain for it is usually built from event dispatchers collected from the root of the hierarchy to the event target.

      The event dispatch chain is constructed by modifications to the provided initial event dispatch chain. The returned chain should have the initial chain at its end so the dispatchers should be prepended to the initial chain.

      The caller shouldn't assume that the initial chain remains unchanged nor that the returned value will reference a different chain.

      Specified by:
      buildEventDispatchChain in interface EventTarget
      Parameters:
      tail - the initial chain to build from
      Returns:
      the resulting event dispatch chain for this target
    • getUserData

      public Object getUserData()
      Returns the Object that was set by setUserData(Object), or null if no object has been set.
      Returns:
      the user object that was stored (including null), or null if no object has been set
    • setUserData

      public void setUserData(Object value)
      Stores a user object that contains data at their discretion. It can later be retrieved by calling getUserData().
      Parameters:
      value - the user object to be stored
    • getProperties

      public ObservableMap<Object,Object> getProperties()
      Returns an observable map of properties on this menu item for use primarily by application developers.
      Returns:
      an observable map of properties on this menu item for use primarily by application developers
    • getTypeSelector

      public String getTypeSelector()
      The type of this Styleable that is to be used in selector matching. This is analogous to an "element" in HTML. (CSS Type Selector).
      Specified by:
      getTypeSelector in interface Styleable
      Returns:
      "MenuItem"
      Since:
      JavaFX 8.0
    • getStyleableParent

      public Styleable getStyleableParent()
      Return the parent of this Styleable, or null if there is no parent.
      Specified by:
      getStyleableParent in interface Styleable
      Returns:
      getParentMenu(), or getParentPopup() if parentMenu is null
      Since:
      JavaFX 8.0
    • getPseudoClassStates

      public final ObservableSet<PseudoClass> getPseudoClassStates()
      Return the pseudo-class state of this Styleable. CSS assumes this set is read-only.
      Specified by:
      getPseudoClassStates in interface Styleable
      Returns:
      the pseudo-class state
      Since:
      JavaFX 8.0
    • getCssMetaData

      public List<CssMetaData<? extends Styleable,?>> getCssMetaData()
      Description copied from interface: Styleable
      The CssMetaData of this Styleable. This may be returned as an unmodifiable list.
      Specified by:
      getCssMetaData in interface Styleable
      Returns:
      the CssMetaData