Spec-Zone.ru › OpenJavaFX 24

Класс ContextMenu

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. 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);
Image of the ContextMenu control

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, чтобы получить ожидаемые результаты.

С момента:
JavaFX 2.0
См. также:
  • MenuItem
  • Menu

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в классе javafx.scene.control.PopupControl

PopupControl.CSSBridge

Вложенные классы/интерфейсы, объявленные в классе javafx.stage.PopupWindow

PopupWindow.AnchorLocation

Краткое описание свойств

Тип Свойство Описание
final 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

bridge, USE_COMPUTED_SIZE, USE_PREF_SIZE

Краткое описание конструкторов

Конструктор Описание
ContextMenu()
Создать новое ContextMenu
ContextMenu(MenuItem... items)
Создать новое ContextMenu, инициализированное заданными элементами

Краткое описание методов

Модификатор и тип Метод Описание
final ObservableList<MenuItem> getItems()
Элементы меню в контекстном меню.
final EventHandler<ActionEvent> getOnAction()
Получает значение свойства onAction.
void hide()
Скрывает это ContextMenu и любые видимые подменю, предполагая, что при вызове этой функции ContextMenu было отображено.
final ObjectProperty<EventHandler<ActionEvent>> onActionProperty()
Функция обратного вызова, которая уведомляет о том, что элемент внутри этого ContextMenu был активирован.
final void setOnAction(EventHandler<ActionEvent> value)
Устанавливает значение свойства onAction.
void show(Node anchor, double screenX, double screenY)
Отображает ContextMenu в указанных координатах экрана.
void show(Node anchor, Side side, double dx, double dy)
Отображает ContextMenu относительно заданного узла якоря, со стороны, указанной параметром side, и смещенной на заданные значения dx и dy для осей X и Y соответственно.

Методы, объявленные в классе 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

Методы, объявленные в классе 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

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы, объявленные в интерфейсе javafx.css.Styleable

getStyleableNode

Подробное описание свойств

onAction

public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty
Функция обратного вызова, которая уведомляется, когда элемент, содержащийся в этом ContextMenu, активирован. Текущая реализация также уведомляет все родительские меню, поэтому нет необходимости прослушивать все подменю для событий.
См. также:
  • getOnAction()
  • setOnAction(EventHandler)
  • onActionProperty()

Подробное описание конструкторов

ContextMenu

public ContextMenu()
Создать новое контекстное меню

ContextMenu

public ContextMenu(MenuItem... items)
Создать новое контекстное меню, инициализированное заданными элементами
Параметры:
items - список элементов меню

Подробное описание методов

setOnAction

public final void setOnAction(EventHandler<ActionEvent> value)
Устанавливает значение свойства onAction.
Описание свойства:
Функция обратного вызова, которая уведомляется, когда элемент, содержащийся в этом ContextMenu, активирован. Текущая реализация также уведомляет все родительские меню, поэтому нет необходимости прослушивать все подменю для событий.
Параметры:
value - значение свойства onAction
См. также:
  • getOnAction()
  • onActionProperty()

getOnAction

public final EventHandler<ActionEvent> getOnAction()
Получает значение свойства onAction.
Описание свойства:
Функция обратного вызова, которая уведомляется, когда элемент, содержащийся в этом ContextMenu, активирован. Текущая реализация также уведомляет все родительские меню, поэтому нет необходимости прослушивать все подменю для событий.
Возвращает:
значение свойства onAction
См. также:
  • setOnAction(EventHandler)
  • onActionProperty()

onActionProperty

public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty()
Функция обратного вызова, которая уведомляется, когда элемент, содержащийся в этом ContextMenu, активирован. Текущая реализация также уведомляет все родительские меню, поэтому нет необходимости прослушивать все подменю для событий.
Возвращает:
свойство onAction
См. также:
  • getOnAction()
  • setOnAction(EventHandler)

getItems

public final ObservableList<MenuItem> getItems()
Элементы меню в контекстном меню. Если этот список ObservableList изменяется во время выполнения, контекстное меню будет обновляться должным образом.
Возвращает:
элементы меню в этом контекстном меню
См. также:
  • MenuItem

show

public void show(Node anchor, Side side, double dx, double dy)
Отображает ContextMenu относительно заданного узла-якоря, со стороны, указанной параметром side, и смещенным на заданные значения dx и dy для осей x и y соответственно. Если места недостаточно, меню перемещается на противоположную сторону, а смещение не применяется.

Для ясности назначения параметра side, обратите внимание, что он относится к узлу-якорю. Таким образом, side значения TOP означало бы, что нижний левый угол контекстного меню установлен в верхний левый угол якоря.

Эта функция полезна для точной настройки позиции меню относительно родительского узла, чтобы обеспечить близкое выравнивание.

Параметры:
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

Отправить отчет об ошибке или предложить улучшение
Авторские права © 2008, 2025, Oracle и/или его аффилированные лица. Все права защищены.

© 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