Spec-Zone.ru › OpenJavaFX 21

Класс 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. Если необходимо вставить произвольный узел Node в меню, можно использовать 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

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

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

PopupControl.CSSBridge

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

PopupWindow.AnchorLocation

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

Поля, объявленные в классе javafx.scene.control.PopupControl

bridge, USE_COMPUTED_SIZE, USE_PREF_SIZE

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

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

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

Модификатор и тип Метод Описание
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 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