@IDProperty(value="id") public class ContextMenu extends PopupControl
メニュー・アイテムのObservableListを含むポップアップ・コントロール。 items ObservableListには任意のMenuItemタイプを挿入でき、そのサブクラスであるMenu、MenuItem、RadioMenuItem、CheckMenuItemおよびCustomMenuItemも含めることができます。 任意のノードをメニューに挿入する必要がある場合、CustomMenuItemを使用できます。 この一般的なルールの1つの例外は、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.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がテキスト・フィールドの真下に表示されることに注意してください。 Sideを変えると、想定どおりの結果を得ることができます。
| Type | プロパティと説明 |
|---|---|
ObjectProperty<EventHandler<ActionEvent>> |
onAction
この
ContextMenu内に含まれるアイテムがアクティブ化されると通知されるコールバック関数。 |
id, maxHeight, maxWidth, minHeight, minWidth, prefHeight, prefWidth, skin, styleanchorLocation, anchorX, anchorY, autoFix, autoHide, consumeAutoHidingEvents, hideOnEscape, onAutoHide, ownerNode, ownerWindowPopupControl.CSSBridgePopupWindow.AnchorLocationbridge, USE_COMPUTED_SIZE, USE_PREF_SIZE| コンストラクタと説明 |
|---|
ContextMenu()
新しいContextMenuを作成します。
|
ContextMenu(MenuItem... items)
特定のアイテムで初期化された新しいContextMenuを作成します。
|
| 修飾子と型 | メソッドと説明 |
|---|---|
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)
hposおよびvposパラメータで指定された側と、x軸およびy軸それぞれの特定のdxおよびdy値によるオフセットに基づいて、特定のアンカー・ノードに対して相対的にContextMenuを表示します。 |
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, stylePropertyanchorLocationProperty, 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, showaddEventFilter, addEventHandler, buildEventDispatchChain, centerOnScreen, eventDispatcherProperty, fireEvent, focusedProperty, getEventDispatcher, getHeight, getOnCloseRequest, getOnHidden, getOnHiding, getOnShowing, getOnShown, getOpacity, getProperties, getScene, getUserData, getWidth, getX, getY, hasProperties, heightProperty, isFocused, isShowing, onCloseRequestProperty, onHiddenProperty, onHidingProperty, onShowingProperty, onShownProperty, opacityProperty, removeEventFilter, removeEventHandler, requestFocus, sceneProperty, setEventDispatcher, setEventHandler, setHeight, setOnCloseRequest, setOnHidden, setOnHiding, setOnShowing, setOnShown, setOpacity, setUserData, setWidth, setX, setY, show, showingProperty, sizeToScene, widthProperty, xProperty, yPropertypublic final ObjectProperty<EventHandler<ActionEvent>> onActionProperty
ContextMenu内に含まれるアイテムがアクティブ化されると通知されるコールバック関数。 現在の実装はすべての親メニューも通知するため、イベントのためにすべてのサブメニューをリスニングする必要はありません。 public ContextMenu()
public ContextMenu(MenuItem... items)
public final void setOnAction(EventHandler<ActionEvent> value)
ContextMenu内に含まれるアイテムがアクティブ化されると通知されるコールバック関数。 現在の実装はすべての親メニューも通知するため、イベントのためにすべてのサブメニューをリスニングする必要はありません。 public final EventHandler<ActionEvent> getOnAction()
ContextMenu内に含まれるアイテムがアクティブ化されると通知されるコールバック関数。 現在の実装はすべての親メニューも通知するため、イベントのためにすべてのサブメニューをリスニングする必要はありません。 public final ObjectProperty<EventHandler<ActionEvent>> onActionProperty()
ContextMenu内に含まれるアイテムがアクティブ化されると通知されるコールバック関数。 現在の実装はすべての親メニューも通知するため、イベントのためにすべてのサブメニューをリスニングする必要はありません。 public final ObservableList<MenuItem> getItems()
MenuItempublic void show(Node anchor, Side side, double dx, double dy)
hposおよびvposパラメータで指定された側と、x軸およびy軸それぞれの特定のdxおよびdy値によるオフセットに基づいて、特定のアンカー・ノードに対して相対的にContextMenuを表示します。 十分な領域がない場合、メニューは反対側に移動し、オフセットは適用されません。
hposパラメータおよびvposパラメータの目的を明確にするには、これらがアンカー・ノードに対して相対的であることを考慮します。 したがって、CENTERのhposおよびvposは、ContextMenuがアンカーの上に表示され、ContextMenuの(0,0)位置がアンカーの(0,0)に配置されることを表します。 右のhposはContextMenuをシフトして、その左上(0,0)位置がアンカーの右上位置にアタッチされるようにします。
この関数は、親ノードに対して相対的にメニューの位置を微調整し、詳細に位置合せする場合に便利です。
public void show(Node anchor, double screenX, double screenY)
ContextMenuを表示します。 指定された場所に、サイズ要件のあるContextMenuを表示するための十分な領域がない場合は、ContextMenuを画面に戻すために必要な調整が行われます。 また、このことは、ContextMenuが複数のモニターにまたがらないことも意味します。 show、クラスPopupWindowanchor - anchor - ポップアップの所有者ノード。 nullは指定できず、ウィンドウに関連付けられている必要があります。 screenX - 画面座標でのポップアップ・アンカーのx位置screenY - 画面座標でのポップアップ・アンカーのy位置public void hide()
ContextMenuが表示されていたと想定し、このContextMenuおよび表示可能なサブメニューを非表示にします。
このContextMenuが表示されていない場合は、何も実行されません。
hide、クラスPopupWindowprotected Skin<?> createDefaultSkin()
-fx-skinを介してスキンが提供されていない場合にコントロール用のスキンを作成するために、またはsetSkin(...)を使用してサブクラスで明示的に設定するために呼び出されます。 createDefaultSkin、クラスPopupControlCopyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.