Class ContextMenu
- All Implemented Interfaces:
-
Styleable,EventTarget,Skinnable
@IDProperty("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:
Nested Class Summary
Nested classes/interfaces declared in class javafx.scene.control.PopupControl
PopupControl.CSSBridge
Nested classes/interfaces declared in class javafx.stage.PopupWindow
PopupWindow.AnchorLocation
Property Summary
| Type | Property | Description |
|---|---|---|
final ObjectProperty |
onAction |
Callback function to be informed when an item contained within this ContextMenu has been activated. |
Properties declared in class javafx.scene.control.PopupControl
id, maxHeight, maxWidth, minHeight, minWidth, prefHeight, prefWidth, skin, style
Properties declared in class javafx.stage.PopupWindow
anchorLocation, anchorX, anchorY, autoFix, autoHide, consumeAutoHidingEvents, hideOnEscape, onAutoHide, ownerNode, ownerWindow
Properties declared in class javafx.stage.Window
eventDispatcher, focused, forceIntegerRenderScale, height, onCloseRequest, onHidden, onHiding, onShowing, onShown, opacity, outputScaleX, outputScaleY, renderScaleX, renderScaleY, scene, showing, width, x, y
Field Summary
Fields declared in class javafx.scene.control.PopupControl
bridge, USE_COMPUTED_SIZE, USE_PREF_SIZE
Constructor Summary
| Constructor | Description |
|---|---|
ContextMenu() |
Create a new ContextMenu |
ContextMenu |
Create a new ContextMenu initialized with the given items |
Method Summary
| Modifier and Type | Method | Description |
|---|---|---|
final ObservableList |
getItems() |
The menu items on the context menu. |
final EventHandler |
getOnAction() |
Gets the value of the onAction property. |
void |
hide() |
Hides this ContextMenu and any visible submenus, assuming that when this function is called that the ContextMenu was showing. |
final ObjectProperty |
onActionProperty() |
Callback function to be informed when an item contained within this ContextMenu has been activated. |
final void |
setOnAction |
Sets the value of the onAction property. |
void |
show |
Shows the ContextMenu at the specified screen coordinates. |
void |
show |
Shows the ContextMenu relative to the given anchor node, on the side specified by the side parameter, and offset by the given dx and dy values for the x-axis and y-axis, respectively. |
Methods declared in class javafx.scene.control.PopupControl
createDefaultSkin, 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 declared in 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 declared in class javafx.stage.Window
addEventFilter, addEventHandler, buildEventDispatchChain, centerOnScreen, eventDispatcherProperty, fireEvent, focusedProperty, forceIntegerRenderScaleProperty, getEventDispatcher, getHeight, getOnCloseRequest, getOnHidden, getOnHiding, getOnShowing, getOnShown, getOpacity, getOutputScaleX, getOutputScaleY, getProperties, getRenderScaleX, getRenderScaleY, getScene, getUserData, getWidth, getWindows, getX, getY, hasProperties, heightProperty, isFocused, isForceIntegerRenderScale, isShowing, onCloseRequestProperty, onHiddenProperty, onHidingProperty, onShowingProperty, onShownProperty, opacityProperty, outputScaleXProperty, outputScaleYProperty, removeEventFilter, removeEventHandler, renderScaleXProperty, renderScaleYProperty, requestFocus, sceneProperty, setEventDispatcher, setEventHandler, setForceIntegerRenderScale, setHeight, setOnCloseRequest, setOnHidden, setOnHiding, setOnShowing, setOnShown, setOpacity, setRenderScaleX, setRenderScaleY, setUserData, setWidth, setX, setY, show, showingProperty, sizeToScene, widthProperty, xProperty, yProperty
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
getStyleableNode
Property Details
onAction
public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty
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:
Constructor Details
ContextMenu
public ContextMenu()
ContextMenu
public ContextMenu(MenuItem... items)
- Parameters:
-
items- the list of menu items
Method Details
setOnAction
public final void setOnAction(EventHandler<ActionEvent> value)
onAction property.- Property description:
- Callback function to be informed when an item contained within this
ContextMenuhas 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. - Parameters:
-
value- the value for theonActionproperty - See Also:
getOnAction
public final EventHandler<ActionEvent> getOnAction()
onAction property.- Property description:
- Callback function to be informed when an item contained within this
ContextMenuhas 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. - Returns:
- the value of the
onActionproperty - See Also:
onActionProperty
public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty()
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.- Returns:
- the
onActionproperty - See Also:
getItems
public final ObservableList<MenuItem> getItems()
- Returns:
- the menu items on this context menu
- See Also:
show
public void show(Node anchor, Side side, double dx, double dy)
ContextMenu relative to the given anchor node, on the side specified by the side parameter, 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 side parameter, consider that it is relative to the anchor node. As such, a side of TOP would mean that the ContextMenu's bottom left corner is set to the top left corner of the anchor.
This function is useful for finely tuning the position of a menu, relative to the parent node to ensure close alignment.
- Parameters:
-
anchor- the anchor node -
side- the side -
dx- the dx value for the x-axis -
dy- the dy value for the y-axis
show
public void show(Node anchor, double screenX, double screenY)
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 on screen. This also means that the ContextMenu will not span multiple monitors.- Overrides:
-
showin classPopupWindow - Parameters:
-
anchor- the anchor node -
screenX- the x position of the anchor in screen coordinates -
screenY- the y position of the anchor in screen coordinates
hide
public void hide()
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:
-
hidein classPopupWindow
© 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.