Spec-Zone.ru › OpenJavaFX 8
javafx.scene.control

Class ContextMenu

java.lang.Object
  • javafx.stage.Window
    • javafx.stage.PopupWindow
      • javafx.scene.control.PopupControl
        • javafx.scene.control.ContextMenu

All Implemented Interfaces:

Styleable, EventTarget, Skinnable



@IDProperty(value="id")
public class ContextMenu
extends PopupControl

A popup control containing an ObservableList of menu items. The items ObservableList allows for any MenuItem type to be inserted, including its subclasses Menu, MenuItem, RadioMenuItem, CheckMenuItem and CustomMenuItem. If an arbitrary Node needs to be inserted into a menu, a CustomMenuItem can be used. One exception to this general rule is that SeparatorMenuItem could be used for inserting a separator.

A common use case for this class is creating and showing context menus to users. To create a context menu using ContextMenu you can do the following:

final ContextMenu contextMenu = new ContextMenu();
contextMenu.setOnShowing(new EventHandler<WindowEvent>() {
    public void handle(WindowEvent e) {
        System.out.println("showing");
    }
});
contextMenu.setOnShown(new EventHandler<WindowEvent>() {
    public void handle(WindowEvent e) {
        System.out.println("shown");
    }
});

MenuItem item1 = new MenuItem("About");
item1.setOnAction(new EventHandler<ActionEvent>() {
    public void handle(ActionEvent e) {
        System.out.println("About");
    }
});
MenuItem item2 = new MenuItem("Preferences");
item2.setOnAction(new EventHandler<ActionEvent>() {
    public void handle(ActionEvent e) {
        System.out.println("Preferences");
    }
});
contextMenu.getItems().addAll(item1, item2);

final TextField textField = new TextField("Type Something");
textField.setContextMenu(contextMenu);

Control.setContextMenu(javafx.scene.control.ContextMenu) convenience method can be used to set a context menu on on any control. The example above results in the context menu being displayed on the right Side of the TextField. Alternatively, an event handler can also be set on the control to invoke the context menu as shown below.

textField.setOnAction(new EventHandler<ActionEvent>() {
    public void handle(ActionEvent e) {
        contextMenu.show(textField, Side.BOTTOM, 0, 0);
    }
});
 
Group root = (Group) scene.getRoot();
root.getChildren().add(textField);

In this example, the context menu is shown when the user clicks on the Button (of course, you should use the MenuButton control to do this rather than doing the above).

Note that the show function used in the code sample above will result in the ContextMenu appearing directly beneath the TextField. You can vary the Side to get the results you expect.

Since:

JavaFX 2.0

See Also:

MenuItem, Menu

  • Property Summary

    All MethodsInstance MethodsConcrete Methods
    Type Property and Description
    ObjectProperty<EventHandler<ActionEvent>> onAction
    Callback function to be informed when an item contained within this ContextMenu has been activated.
    • Properties inherited from class javafx.scene.control.PopupControl

      id, maxHeight, maxWidth, minHeight, minWidth, prefHeight, prefWidth, skin, style
    • Properties inherited from class javafx.stage.PopupWindow

      anchorLocation, anchorX, anchorY, autoFix, autoHide, consumeAutoHidingEvents, hideOnEscape, onAutoHide, ownerNode, ownerWindow
    • Properties inherited from class javafx.stage.Window

      eventDispatcher, focused, height, onCloseRequest, onHidden, onHiding, onShowing, onShown, opacity, scene, showing, width, x, y
  • Nested Class Summary

    • Nested classes/interfaces inherited from class javafx.scene.control.PopupControl

      PopupControl.CSSBridge
    • Nested classes/interfaces inherited from class javafx.stage.PopupWindow

      PopupWindow.AnchorLocation
  • Field Summary

    • Fields inherited from class javafx.scene.control.PopupControl

      bridge, USE_COMPUTED_SIZE, USE_PREF_SIZE
  • Constructor Summary

    Constructors
    Constructor and Description
    ContextMenu()
    Create a new ContextMenu
    ContextMenu(MenuItem... items)
    Create a new ContextMenu initialized with the given items
  • Method Summary

    All MethodsInstance MethodsConcrete Methods
    Modifier and Type Method and Description
    protected Skin<?> createDefaultSkin()
    Create a new instance of the default skin for this control.
    ObservableList<MenuItem> getItems()
    The menu items on the context menu.
    EventHandler<ActionEvent> getOnAction()
    Gets the value of the property onAction.
    void hide()
    Hides this ContextMenu and any visible submenus, assuming that when this function is called that the ContextMenu was showing.
    ObjectProperty<EventHandler<ActionEvent>> onActionProperty()
    Callback function to be informed when an item contained within this ContextMenu has been activated.
    void setOnAction(EventHandler<ActionEvent> value)
    Sets the value of the property onAction.
    void show(Node anchor, double screenX, double screenY)
    Shows the ContextMenu at the specified screen coordinates.
    void show(Node anchor, Side side, double dx, double dy)
    Shows the ContextMenu relative to the given anchor node, on the side specified by the hpos and vpos parameters, and offset by the given dx and dy values for the x-axis and y-axis, respectively.
    • Methods inherited from class javafx.scene.control.PopupControl

      getClassCssMetaData, getCssMetaData, getId, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getPrefHeight, getPrefWidth, getPseudoClassStates, getSkin, getStyle, getStyleableParent, getStyleClass, getTypeSelector, idProperty, maxHeight, maxHeightProperty, maxWidth, maxWidthProperty, minHeight, minHeightProperty, minWidth, minWidthProperty, prefHeight, prefHeightProperty, prefWidth, prefWidthProperty, pseudoClassStateChanged, setId, setMaxHeight, setMaxSize, setMaxWidth, setMinHeight, setMinSize, setMinWidth, setPrefHeight, setPrefSize, setPrefWidth, setSkin, setStyle, skinProperty, styleProperty
    • Methods inherited from class javafx.stage.PopupWindow

      anchorLocationProperty, anchorXProperty, anchorYProperty, autoFixProperty, autoHideProperty, consumeAutoHidingEventsProperty, getAnchorLocation, getAnchorX, getAnchorY, getConsumeAutoHidingEvents, getOnAutoHide, getOwnerNode, getOwnerWindow, hideOnEscapeProperty, isAutoFix, isAutoHide, isHideOnEscape, onAutoHideProperty, ownerNodeProperty, ownerWindowProperty, setAnchorLocation, setAnchorX, setAnchorY, setAutoFix, setAutoHide, setConsumeAutoHidingEvents, setHideOnEscape, setOnAutoHide, setScene, show, show
    • Methods inherited from class javafx.stage.Window

      addEventFilter, addEventHandler, buildEventDispatchChain, centerOnScreen, eventDispatcherProperty, fireEvent, focusedProperty, getEventDispatcher, getHeight, getOnCloseRequest, getOnHidden, getOnHiding, getOnShowing, getOnShown, getOpacity, getProperties, getScene, getUserData, getWidth, getX, getY, hasProperties, heightProperty, isFocused, isShowing, onCloseRequestProperty, onHiddenProperty, onHidingProperty, onShowingProperty, onShownProperty, opacityProperty, removeEventFilter, removeEventHandler, requestFocus, sceneProperty, setEventDispatcher, setEventHandler, setHeight, setOnCloseRequest, setOnHidden, setOnHiding, setOnShowing, setOnShown, setOpacity, setUserData, setWidth, setX, setY, show, showingProperty, sizeToScene, widthProperty, xProperty, yProperty
    • Methods inherited from class java.lang.Object

      clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Property Detail

    • onAction

      public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty
      Callback function to be informed when an item contained within this ContextMenu has been activated. The current implementation informs all parent menus as well, so that it is not necessary to listen to all sub menus for events.

      See Also:

      getOnAction(), setOnAction(EventHandler)

  • Constructor Detail

    • ContextMenu

      public ContextMenu()
      Create a new ContextMenu
    • ContextMenu

      public ContextMenu(MenuItem... items)
      Create a new ContextMenu initialized with the given items
  • Method Detail

    • setOnAction

      public final void setOnAction(EventHandler<ActionEvent> value)
      Sets the value of the property onAction.

      Property description:

      Callback function to be informed when an item contained within this ContextMenu has been activated. The current implementation informs all parent menus as well, so that it is not necessary to listen to all sub menus for events.

    • getOnAction

      public final EventHandler<ActionEvent> getOnAction()
      Gets the value of the property onAction.

      Property description:

      Callback function to be informed when an item contained within this ContextMenu has been activated. The current implementation informs all parent menus as well, so that it is not necessary to listen to all sub menus for events.

    • onActionProperty

      public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty()
      Callback function to be informed when an item contained within this ContextMenu has been activated. The current implementation informs all parent menus as well, so that it is not necessary to listen to all sub menus for events.

      See Also:

      getOnAction(), setOnAction(EventHandler)

    • getItems

      public final ObservableList<MenuItem> getItems()
      The menu items on the context menu. If this ObservableList is modified at runtime, the ContextMenu will update as expected.

      See Also:

      MenuItem

    • show

      public void show(Node anchor,
                       Side side,
                       double dx,
                       double dy)
      Shows the ContextMenu relative to the given anchor node, on the side specified by the hpos and vpos parameters, and offset by the given dx and dy values for the x-axis and y-axis, respectively. If there is not enough room, the menu is moved to the opposite side and the offset is not applied.

      To clarify the purpose of the hpos and vpos parameters, consider that they are relative to the anchor node. As such, a hpos and vpos of CENTER would mean that the ContextMenu appears on top of the anchor, with the (0,0) position of the ContextMenu positioned at (0,0) of the anchor. A hpos of right would then shift the ContextMenu such that its top-left (0,0) position would be attached to the top-right position of the anchor.

      This function is useful for finely tuning the position of a menu, relative to the parent node to ensure close alignment.

    • show

      public void show(Node anchor,
                       double screenX,
                       double screenY)
      Shows the ContextMenu at the specified screen coordinates. If there is not enough room at the specified location to show the ContextMenu given its size requirements, the necessary adjustments are made to bring the ContextMenu back back on screen. This also means that the ContextMenu will not span multiple monitors.

      Overrides:

      show in class PopupWindow

      Parameters:

      anchor - The owner Node of the popup. It must not be null and must be associated with a Window.

    • hide

      public void hide()
      Hides this ContextMenu and any visible submenus, assuming that when this function is called that the ContextMenu was showing.

      If this ContextMenu is not showing, then nothing happens.

      Overrides:

      hide in class PopupWindow

    • 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 with setSkin(...).

      Overrides:

      createDefaultSkin in class PopupControl

      Returns:

      new instance of default skin for this control. If null then the control will have no skin unless one is provided by css.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API