Класс ContextMenu
- javafx.stage.Window
-
- javafx.stage.PopupWindow
-
- javafx.scene.control.PopupControl
-
- javafx.scene.control.ContextMenu
Все реализованные интерфейсы:
@IDProperty(value="id") public class ContextMenu extends PopupControl
Контрол-панель всплывающего меню, содержащая список элементов меню ObservableList. items ObservableList позволяет вставлять элементы любого типа 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, используемая в приведённом примере, выведет контекстное меню непосредственно под 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.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, 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, 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
-
-
Подробное описание свойства
-
onAction
public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty
Функция обратного вызова, которая уведомляется, когда элемент, содержащийся в этомContextMenu, активирован. Текущая реализация также уведомляет все родительские меню, поэтому нет необходимости прослушивать все подменю для событий.См. также:
-
-
Подробное описание конструктора
-
ContextMenu
public ContextMenu()
Создаёт новое контекстное меню
-
ContextMenu
public ContextMenu(MenuItem... 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, активирован. Текущая реализация также уведомляет все родительские меню, поэтому нет необходимости прослушивать все подменю для событий.См. также:
-
getItems
public final ObservableList<MenuItem> getItems()
Элементы меню в контекстном меню. Если эта ObservableList модифицируется во время выполнения, контекстное меню будет обновляться как ожидается.См. также:
-
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) будет прикреплено к верхнему правому углу якоря.Эта функция полезна для точной настройки позиции меню относительно родительского узла, чтобы обеспечить близкое выравнивание.
-
show
public void show(Node anchor, double screenX, double screenY)ОтображаетContextMenuв указанных координатах экрана. Если в указанном месте недостаточно места для отображенияContextMenu, учитывая его размер, производятся необходимые корректировки, чтобы разместитьContextMenuна экране. Это также означает, чтоContextMenuне будет охватывать несколько мониторов.Переопределяет:
showв классеPopupWindowПараметры:
anchor- Узел-владелец всплывающего окна. Он не должен быть null и должен быть связан с окном.
-
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.