- java.lang.Object
-
- javafx.stage.Window
-
- javafx.stage.PopupWindow
-
- javafx.scene.control.PopupControl
-
- javafx.scene.control.ContextMenu
-
- All Implemented Interfaces:
-
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)
方便的方法可以用于在任何控件上设置上下文菜单。 上述示例导致上下文菜单显示在TextField的右侧Side
上。 或者,也可以在控件上设置事件处理程序来调用上下文菜单,如下所示。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
以获取您期望的结果。
-
-
Property Summary
Properties Type Property 描述 ObjectProperty<EventHandler<ActionEvent>>
onAction
当该ContextMenu
包含的项目已被激活时,通知回调功能。-
Properties inherited from class javafx.scene.control.PopupControl
id, maxHeight, maxWidth, minHeight, minWidth, prefHeight, prefWidth, skin, style
-
Properties inherited from class javafx.stage.PopupWindow
anchorLocation, anchorX, anchorY, autoFix, autoHide, consumeAutoHidingEvents, hideOnEscape, onAutoHide, ownerNode, ownerWindow
-
Properties inherited from class javafx.stage.Window
eventDispatcher, focused, forceIntegerRenderScale, height, onCloseRequest, onHidden, onHiding, onShowing, onShown, opacity, outputScaleX, outputScaleY, renderScaleX, renderScaleY, scene, showing, width, x, y
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javafx.scene.control.PopupControl
PopupControl.CSSBridge
-
Nested classes/interfaces inherited from class javafx.stage.PopupWindow
PopupWindow.AnchorLocation
-
-
Field Summary
-
Fields inherited from class javafx.scene.control.PopupControl
bridge, USE_COMPUTED_SIZE, USE_PREF_SIZE
-
-
构造方法摘要
构造方法 Constructor 描述 ContextMenu()
创建一个新的ContextMenuContextMenu(MenuItem... items)
创建一个使用给定项目初始化的新的ContextMenu
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 protected Skin<?>
createDefaultSkin()
为此控件创建一个新的默认皮肤实例。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
相对于给定锚节点,在由指定的侧hpos
个vpos
参数,并且由给定的偏移dx
倍dy
分别用于x轴和y轴,的值。-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from class javafx.scene.control.PopupControl
getClassCssMetaData, getCssMetaData, getId, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getPrefHeight, getPrefWidth, getPseudoClassStates, getSkin, getStyle, getStyleableNode, 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
-
Methods inherited from class 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
-
Methods inherited from class 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
-
-
-
-
Property Detail
-
onAction
public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty
当这个ContextMenu
包含的项目被激活时,回调功能被通知。 当前的实现也通知所有父菜单,因此不需要收听所有子菜单的事件。
-
-
构造方法详细信息
-
ContextMenu
public ContextMenu()
创建一个新的ContextMenu
-
ContextMenu
public ContextMenu(MenuItem... items)
创建一个使用给定项目初始化的新的ContextMenu- 参数
-
items
- 菜单项列表
-
-
方法详细信息
-
setOnAction
public final void setOnAction(EventHandler<ActionEvent> value)
设置属性onAction的值。- Property description:
-
当这个
ContextMenu
包含的项目被激活时,通知回调函数。 当前的实现也通知所有父菜单,因此不需要收听所有子菜单的事件。
-
getOnAction
public final EventHandler<ActionEvent> getOnAction()
获取属性onAction的值。- Property description:
-
当这个
ContextMenu
包含的项目被激活时,回调功能被通知。 当前的实现也通知所有父菜单,因此不需要收听所有子菜单的事件。
-
onActionProperty
public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty()
当这个ContextMenu
包含的项目被激活时,通知回调功能。 当前的实现也通知所有父菜单,因此不需要收听所有子菜单的事件。
-
getItems
public final ObservableList<MenuItem> getItems()
上下文菜单中的菜单项。 如果这个ObservableList在运行时被修改,ContextMenu将按预期更新。- 结果
- 此上下文菜单上的菜单项
- 另请参见:
-
MenuItem
-
show
public void show(Node anchor, Side side, double dx, double dy)
示出了ContextMenu
相对于给定锚节点,在由指定的侧hpos
个vpos
参数,并且由给定的偏移dx
倍dy
分别用于x轴和y轴,的值。 如果没有足够的空间,菜单将移动到相反的一侧,并且不应用偏移量。为了澄清
hpos
和vpos
参数的目的,请考虑它们是相对于锚节点。 因此,hpos
和vpos
的CENTER
将意味着ContextMenu出现在锚点的顶部,ContextMenu
的(0,0)位置位于ContextMenu
的(0,0)处。 甲hpos
的右然后将转移的ContextMenu
使得其左上(0,0)位置将被附接至锚定件的右上方位置。此功能可用于精细调整菜单的位置,相对于父节点,以确保紧密对齐。
- 参数
-
anchor
- 锚节点 -
side
- 一边 -
dx
- x轴的dx值 -
dy
- y轴的dy值
-
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
-
createDefaultSkin
protected Skin<?> createDefaultSkin()
为此控件创建一个新的默认皮肤实例。 如果没有通过CSS-fx-skin
提供皮肤或者在具有setSkin(...)
的子类中显式设置,则调用此控件创建皮肤。- 重写:
-
createDefaultSkin
在PopupControl
- 结果
- 此控件的默认皮肤的新实例。 如果为null,则控件将没有皮肤,除非由css提供。
-
-