Класс 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); 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.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)
- Описание свойства:
- Функция обратного вызова, уведомляющая о том, что элемент, содержащийся в этом
ContextMenu, был активирован. Текущая реализация уведомляет также все родительские меню, поэтому нет необходимости прослушивать все подменю на предмет событий.
getOnAction
public final EventHandler<ActionEvent> getOnAction()
- Описание свойства:
- Функция обратного вызова, уведомляющая о том, что элемент, содержащийся в этом
ContextMenu, был активирован. Текущая реализация уведомляет также все родительские меню, поэтому нет необходимости прослушивать все подменю на предмет событий.
onActionProperty
public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty()
ContextMenu, был активирован. Текущая реализация уведомляет также все родительские меню, поэтому нет необходимости прослушивать все подменю на предмет событий.- См. также:
-
getOnAction(),setOnAction(EventHandler)
getItems
public final ObservableList<MenuItem> getItems()
- Возвращает:
- элементы меню в этом контекстном меню
- См. также:
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.