flex中的菜单栏控件,需要处理单个菜单项的单独方法

时间:2009-06-26 06:06:03

标签: flex actionscript-3

我需要单击单独菜单项的单独方法,以便单个项目可以处理单独的方法。

我需要知道菜单项中的所有属性,例如type =“radio”。

<mx:MenuBar id="jj" labelField="@label" itemClick="MenuItemClick(event)" x="23" y="228">
    <mx:XMLList>
        <menuitem label="File">
            <menuitem label="New" type="radio"/>
            <menuitem label="Open" data="Openfile" type="Check" />
            <menuitem label="Save" />
            <menuitem label="Exist"/>
        </menuitem>           
    </mx:XMLList>   
</mx:MenuBar>

您能为菜单栏控制提供任何链接或示例吗?

由于

2 个答案:

答案 0 :(得分:0)

Adob​​e Flex docs MenuBar

中的示例

只允许三种类型:支票,收音机或分隔符。

<?xml version="1.0"?>
<!-- Simple example to demonstrate the MenuBar control. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initCollections();" >

    <mx:Script>
        <![CDATA[

            import mx.events.MenuEvent;
            import mx.controls.Alert;
            import mx.collections.*;

            [Bindable]
            public var menuBarCollection:XMLListCollection;

            private var menubarXML:XMLList =
                <>
                    <menuitem label="Menu1" data="top">
                        <menuitem label="MenuItem 1-A" data="1A"/>
                        <menuitem label="MenuItem 1-B" data="1B"/>
                    </menuitem>
                    <menuitem label="Menu2" data="top">
                        <menuitem label="MenuItem 2-A" type="check"  data="2A"/>
                        <menuitem type="separator"/>
                        <menuitem label="MenuItem 2-B" >
                            <menuitem label="SubMenuItem 3-A" type="radio"
                                groupName="one" data="3A"/>
                            <menuitem label="SubMenuItem 3-B" type="radio"
                                groupName="one" data="3B"/>
                        </menuitem>
                    </menuitem>
                </>;

            // Event handler to initialize the MenuBar control.
            private function initCollections():void {
                menuBarCollection = new XMLListCollection(menubarXML);
            }

            // Event handler for the MenuBar control's itemClick event.
            private function menuHandler(event:MenuEvent):void  {
                // Don't open the Alert for a menu bar item that 
                // opens a popup submenu.
                if (event.item.@data != "top") {
                    Alert.show("Label: " + event.item.@label + "\n" + 
                        "Data: " + event.item.@data, "Clicked menu item");
                }        
            }
         ]]>
    </mx:Script>

    <mx:Panel title="MenuBar Control Example" height="75%" width="75%" 
        paddingTop="10" paddingLeft="10">

        <mx:Label width="100%" color="blue"
           text="Select a menu item."/>

        <mx:MenuBar labelField="@label" itemClick="menuHandler(event);" 
            dataProvider="{menuBarCollection}" />

    </mx:Panel>
</mx:Application>

还为此页面添加了书签Language Reference

答案 1 :(得分:0)

Vineth,

除非您动态创建菜单栏和子项,否则无法为菜单项添加单个事件处理程序。这比它的价值更痛苦,所以我建议使用如上所述的itemCLick处理程序并使用开关来确定要触发的方法。例如:

switch( event.item.@data ){

  case "3A":
    doSomething();
    break;
  case "3A":
    doSomethingElse();
    break;
  defualt:
    doDefault();
    break;

}

注意:这是基于zdmytriv回答