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