@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、style
anchorLocation、anchorX、anchorY、autoFix、autoHide、consumeAutoHidingEvents、hideOnEscape、onAutoHide、ownerNode、ownerWindow
PopupControl.CSSBridge
PopupWindow.AnchorLocation
bridge、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、styleProperty
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
addEventFilter、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、yProperty
public 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()
MenuItem
public 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
、クラス: PopupWindow
anchor
- anchor - ポップアップの所有者ノード。nullは指定できず、ウィンドウに関連付けられている必要があります。screenX
- 画面座標でのポップアップ・アンカーのx位置screenY
- 画面座標でのポップアップ・アンカーのy位置public void hide()
ContextMenu
が表示されていたと想定し、このContextMenu
および表示可能なサブメニューを非表示にします。
このContextMenu
が表示されていない場合は、何も実行されません。
hide
、クラス: PopupWindow
protected Skin<?> createDefaultSkin()
-fx-skin
を介してスキンが提供されていない場合にコントロール用のスキンを作成するために、またはsetSkin(...)
を使用してサブクラスで明示的に設定するために呼び出されます。createDefaultSkin
、クラス: PopupControl
Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.