Spec-Zone.ru › OpenJavaFX 17

Класс 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

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

Свойства
Тип Свойство Описание
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)
Создаёт новое контекстное меню, инициализированное заданными элементами

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

Модификатор и тип Метод Описание
ObservableList<MenuItem> getItems()
Элементы меню контекстного меню.
EventHandler<ActionEvent> getOnAction()
Получает значение свойства onAction.
void hide()
Скрывает это ContextMenu и все видимые подменю, предполагая, что при вызове этой функции ContextMenu было отображено.
ObjectProperty<EventHandler<ActionEvent>> onActionProperty()
Функция обратного вызова, которая информирует о том, когда элемент внутри этого ContextMenu был активирован.
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, 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, 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.scene.control.Skinnable

getSkin, setSkin

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

getStyleableNode

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

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 относительно заданного узла якоря, со стороны, указанной параметром 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