- java.lang.Object
-
- javafx.stage.Window
-
- javafx.stage.PopupWindow
-
- javafx.scene.control.PopupControl
-
- javafx.scene.control.ContextMenu
-
- Все реализованные интерфейсы:
-
Styleable,EventTarget,Skinnable
@IDProperty("id") public class ContextMenu extends PopupControlЭлемент управления всплывающим окном, содержащий ObservableList элементов меню.
itemsObservableList позволяет вставлять любые элементы типаMenuItem, включая его подклассыMenu,MenuItem,RadioMenuItem,CheckMenuItemиCustomMenuItem. Если необходимо вставить произвольный узел в меню, можно использовать CustomMenuItem. Единственное исключение из этого общего правила заключается в том, чтоSeparatorMenuItemможно использовать для вставки разделителя.Типичное применение этого класса — создание и отображение контекстных меню пользователю. Для создания контекстного меню с помощью ContextMenu можно сделать следующее:
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)удобный метод можно использовать для установки контекстного меню на любой элемент управления. В приведенном выше примере контекстное меню отображается справаSideот поля TextField. В качестве альтернативы обработчик событий также может быть установлен на элемент управления для вызова контекстного меню, как показано ниже.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);В этом примере контекстное меню отображается при щелчке пользователем на
Button(конечно, для этого следует использовать элемент управленияMenuButton, а не выполнять действия, описанные выше).Обратите внимание, что функция show, используемая в примере кода выше, приведет к отображению ContextMenu непосредственно под TextField. Можно изменить
Sideдля получения ожидаемого результата.
-
Краткое описание свойств
Свойства Тип Свойство Описание ObjectProperty<EventHandler<ActionEvent>>onActionФункция обратного вызова, которая будет уведомлена при активации элемента, содержащегося в этомContextMenu.-
Свойства, унаследованные от класса javafx.scene.control.PopupControl
id, maxHeight, maxWidth, minHeight, minWidth, prefHeight, prefWidth, skin, style
-
Свойства, унаследованные от класса javafx.stage.PopupWindow
anchorLocation, anchorX, anchorY, autoFix, autoHide, consumeAutoHidingEvents, hideOnEscape, onAutoHide, ownerNode, ownerWindow
-
Свойства, унаследованные от класса javafx.stage.Window
eventDispatcher, focused, forceIntegerRenderScale, height, onCloseRequest, onHidden, onHiding, onShowing, onShown, opacity, outputScaleX, outputScaleY, renderScaleX, renderScaleY, scene, showing, width, x, y
-
-
Краткое описание вложенных классов
-
Вложенные классы/интерфейсы, унаследованные от класса javafx.scene.control.PopupControl
PopupControl.CSSBridge
-
Вложенные классы/интерфейсы, унаследованные от класса javafx.stage.PopupWindow
PopupWindow.AnchorLocation
-
-
Краткое описание полей
-
Поля, унаследованные от класса javafx.scene.control.PopupControl
bridge, USE_COMPUTED_SIZE, USE_PREF_SIZE
-
-
Краткое описание конструкторов
Конструкторы Конструктор Описание ContextMenu()Создать новый ContextMenuContextMenu(MenuItem... items)Создать новый ContextMenu, инициализированный заданными элементами
-
Краткое описание методов
Все методыМетоды экземпляраКонкретные методы Модификатор и тип Метод Описание protected Skin<?>createDefaultSkin()Создает новый экземпляр стандартной темы для этого элемента управления.ObservableList<MenuItem>getItems()Элементы меню контекстного меню.EventHandler<ActionEvent>getOnAction()Получает значение свойства onAction.voidhide()Скрывает этоContextMenuи все видимые подменю, предполагая, что при вызове этой функцииContextMenuотображалось.ObjectProperty<EventHandler<ActionEvent>>onActionProperty()Функция обратного вызова, которая будет уведомлена при активации элемента, содержащегося в этомContextMenu.voidsetOnAction(EventHandler<ActionEvent> value)Устанавливает значение свойства onAction.voidshow(Node anchor, double screenX, double screenY)ОтображаетContextMenuпо указанным координатам экрана.voidshow(Node anchor, Side side, double dx, double dy)ОтображаетContextMenuотносительно заданного узла якоря, со стороны, указанной параметрамиhposиvpos, и с заданнымdxиdyсмещением по оси X и Y соответственно.-
Методы, унаследованные от класса javafx.scene.control.PopupControl
getClassCssMetaData, getCssMetaData, getId, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getPrefHeight, getPrefWidth, getPseudoClassStates, getSkin, getStyle, getStyleableNode, 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
-
Методы, унаследованные от класса 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
-
Методы, унаследованные от класса 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
-
-
Подробности свойства
-
onAction
public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty
Функция обратного вызова, которая будет уведомлена, когда элемент, содержащийся в этомContextMenu, будет активирован. Текущая реализация также уведомляет все родительские меню, поэтому нет необходимости прослушивать все подменю на предмет событий.- См. также:
-
getOnAction(),setOnAction(EventHandler)
-
-
Подробности конструктора
-
ContextMenu
public ContextMenu()
Создаёт новое контекстное меню
-
ContextMenu
public ContextMenu(MenuItem... items)
Создаёт новое контекстное меню, инициализированное заданными элементами- Параметры:
-
items- список элементов меню
-
-
Подробности метода
-
setOnAction
public final void setOnAction(EventHandler<ActionEvent> value)
Устанавливает значение свойства onAction.- Описание свойства:
- Функция обратного вызова, которая будет уведомлена, когда элемент, содержащийся в этом
ContextMenu, будет активирован. Текущая реализация также уведомляет все родительские меню, поэтому нет необходимости прослушивать все подменю на предмет событий.
-
getOnAction
public final EventHandler<ActionEvent> getOnAction()
Получает значение свойства onAction.- Описание свойства:
- Функция обратного вызова, которая будет уведомлена, когда элемент, содержащийся в этом
ContextMenu, будет активирован. Текущая реализация также уведомляет все родительские меню, поэтому нет необходимости прослушивать все подменю на предмет событий.
-
onActionProperty
public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty()
Функция обратного вызова, которая будет уведомлена, когда элемент, содержащийся в этомContextMenu, будет активирован. Текущая реализация также уведомляет все родительские меню, поэтому нет необходимости прослушивать все подменю на предмет событий.- См. также:
-
getOnAction(),setOnAction(EventHandler)
-
getItems
public final ObservableList<MenuItem> getItems()
Элементы меню в контекстном меню. Если этот ObservableList изменяется во время выполнения, контекстное меню будет обновляться как ожидается.- Возвращает:
- элементы меню в этом контекстном меню
- См. также:
MenuItem
-
show
public void show(Node anchor, Side side, double dx, double dy)
ОтображаетContextMenuотносительно узла якоря, со стороны, указанной параметрамиhposиvpos, и смещённое на заданные значенияdxиdyдля осей X и Y соответственно. Если места недостаточно, меню перемещается на противоположную сторону, и смещение не применяется.Чтобы прояснить назначение параметров
hposиvpos, следует учесть, что они относительны к узлу якоря. Таким образом,hposиvposзначенияCENTERозначают, что контекстное меню отображается поверх якоря, при этом положение (0,0)ContextMenuсоответствует положению (0,0) якоря. Значениеhposсправа сдвинетContextMenuтак, что его верхний левый угол (0,0) будет прикреплён к верхнему правому углу якоря.Эта функция полезна для точной настройки положения меню относительно родительского узла, чтобы обеспечить близкое выравнивание.
- Параметры:
-
anchor- узел якоря -
side- сторона -
dx- значение dx для оси x -
dy- значение dy для оси y
-
show
public void show(Node anchor, double screenX, double screenY)
ОтображаетContextMenuв указанных координатах экрана. Если в указанном месте недостаточно места для отображенияContextMenuв соответствии с его размерами, производятся необходимые корректировки, чтобы поместитьContextMenuобратно на экран. Это также означает, чтоContextMenuне будет охватывать несколько мониторов.- Переопределяет:
-
showв классеPopupWindow - Параметры:
-
anchor- узел якоря -
screenX- положение x якоря в координатах экрана -
screenY- положение y якоря в координатах экрана
-
hide
public void hide()
Скрывает этоContextMenuи все видимые подменю, предполагая, что при вызове этой функцииContextMenuотображалось.Если это
ContextMenuне отображается, то ничего не происходит.- Переопределяет:
-
hideв классеPopupWindow
-
createDefaultSkin
protected Skin<?> createDefaultSkin()
Создаёт новый экземпляр стандартной темы для этого элемента управления. Это вызывается для создания темы для элемента управления, если тема не предоставлена через CSS-fx-skinили явно не задана в подклассе с помощьюsetSkin(...).- Переопределяет:
-
createDefaultSkinв классеPopupControl - Возвращает:
- новый экземпляр стандартной темы для этого элемента управления. Если null, то у элемента управления не будет темы, если она не будет предоставлена через 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.