Menu コントロールは、個別に選択できる選択肢のメニューを持つポップアップコントロールです。ユーザーの操作に対する応答として Menu コントロールを作成するには、ActionScript を使用します。通常、この処理はイベントリスナーの一部です。Menu コントロールは、イベントに対する応答として作成されるので、MXML タグを持ちません。Menu コントロールは、ActionScript でのみ作成できます。
詳細については、『Adobe Flex リファレンスガイド』を参照してください。
次の例は Menu コントロールです。
この例では、MenuItem A と MenuItem D というアイテムがあり、それぞれサブメニューが開きます。サブメニューは、ユーザーが親アイテムの上にマウスポインタを移動したとき、またはキーボードのキーを使用して親アイテムにアクセスしたときに開きます。
Menu コントロールのデフォルトの場所はアプリケーションの左上隅で、x 座標と y 座標はそれぞれ 0 です。x パラメータと y パラメータを show() メソッドに渡すと、アプリケーションを基準とした Menu コントロールの場所を制御できます。
開いたメニューは、ユーザーが有効なメニューアイテムを選択するか、ユーザーがアプリケーションの他のコンポーネントを選択するか、またはスクリプトによって閉じられるまで、表示されたままになります。
常に表示されている静的なメニューを作成するには、MenuBar コントロールまたは PopUpMenuButton コントロールを使用します。MenuBar コントロールの詳細については、MenuBar コントロールを参照してください。PopUpMenuButton コントロールの詳細については、PopUpMenuButton コントロールを参照してください。
MXML タグでは Menu コントロールを作成できません。Menu コントロールは、ActionScript で作成する必要があります。
var myMenu:Menu = Menu.createMenu(null, myMenuData);
(最初のパラメータには、オプションでメニューの親コンテナを指定できます。)
データプロバイダのルートノードを表示しない場合、例えばデータプロバイダが E4X 形式の XML ドキュメントであれば、3 番目のパラメータに false の値を使用します。このパラメータによって、メニューの showRoot プロパティが設定されます。次の例では、データプロバイダのルートを表示しないメニューを作成します。
var myMenu:Menu = Menu.createMenu(null, myMenuData, false);
myMenu.show(10, 10);
この例では、<mx:XML> タグを使用して Menu コントロールのデータを定義します。また、Button コントロールを使用して、Menu コントロールを開くイベントをトリガします。
<?xml version="1.0"?>
<!-- menus/SimpleMenuControl.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >
<mx:Script>
<![CDATA[
// Import the Menu control.
import mx.controls.Menu;
// Create and display the Menu control.
private function createAndShow():void {
var myMenu:Menu = Menu.createMenu(null, myMenuData, false);
myMenu.labelField="@label";
myMenu.show(10, 10);
}
]]>
</mx:Script>
<!-- Define the menu data. -->
<mx:XML format="e4x" id="myMenuData">
<root>
<menuitem label="MenuItem A" >
<menuitem label="SubMenuItem A-1" enabled="false"/>
<menuitem label="SubMenuItem A-2"/>
</menuitem>
<menuitem label="MenuItem B" type="check" toggled="true"/>
<menuitem label="MenuItem C" type="check" toggled="false"/>
<menuitem type="separator"/>
<menuitem label="MenuItem D" >
<menuitem label="SubMenuItem D-1" type="radio"
groupName="one"/>
<menuitem label="SubMenuItem D-2" type="radio"
groupName="one" toggled="true"/>
<menuitem label="SubMenuItem D-3" type="radio"
groupName="one"/>
</menuitem>
</root>
</mx:XML>
<mx:VBox>
<!-- Define a Button control to open the menu -->
<mx:Button id="myButton"
label="Open Menu"
click="createAndShow();"/>
</mx:VBox>
</mx:Application>
前の例で実行する SWF ファイルは以下のとおりです。
XML データ内のノードタグには、どのような名前でも割り当てられます。前の例では、汎用タグの <menuitem> を使用してノードに名前を付けていますが、<node>、<subNode>、<person>、<address> なども使用できます。
この例では E4X 形式の XML データソースを使用しているので、E4X @ 属性指定子シンタックスでラベルフィールドを指定し、データプロバイダのルートノードを非表示にするようコントロールに指示する必要があります。
type 属性など、Menu コントロールにとって意味のある属性またはフィールドがいくつかあります。Flex によるデータプロバイダのデータの解釈方法と使用方法については、メニュー項目情報の指定と使用を参照してください。
Menu コントロールは、マウスまたはキーボードを使用して操作できます。クリックにより、メニューアイテムを選択したり、メニューを閉じたりできます。ただし、次のタイプのメニューアイテムは例外です。
無効なアイテムまたはセパレータ
これらのアイテムの上にマウスを移動またはクリックしても、メニューは表示されたままになります。
サブメニューアンカー
アイテムの上にマウスを移動するとサブメニューが開きますが、クリックしても何も変化しません。開いているサブメニューのアイテム以外のメニューアイテムの上にマウスを移動させると、サブメニューが閉じます。
Menu コントロールにフォーカスがある場合、次のキーを使用して制御できます。
|
キー |
説明 |
|---|---|
|
↓(下向き矢印) ↑(上向き矢印) |
メニュー行の下および上のアイテムを選択します。行の先頭からは末尾に、末尾からは先頭に選択が移動します。 |
|
→(右向き矢印) |
サブメニューを開きます。メニューバーにフォーカスがある場合は、隣のメニューを選択します。 |
|
←(左向き矢印) |
サブメニューを閉じてフォーカスを親メニューに戻します(親メニューがある場合)。または、メニューバーの前のメニューを選択します(メニューバーがある場合)。 |
|
Enter |
サブメニューを開きます。サブメニューがない場合には、行をマウスでクリックしてボタンを離すのと同じ効果があります。 |
|
Esc |
1 つのメニューレベルを閉じます。 |
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート