Adobe air - 右键单击​​树节点添加上下文菜单

时间:2009-10-12 09:03:26

标签: air

我正在使用Adobe Air创建桌面应用程序。在该应用程序中,我有一棵树,我想在右键单击时向菜单添加菜单。我按照他们说的flex树的方式,但没有工作。

任何操作方法?

〜Umesh制作

1 个答案:

答案 0 :(得分:4)

我不确定你的问题是什么,因为你没有说它是否没有编译,没有显示或给出运行时错误等,所以我把一个mxml放在一起来演示它。代码主要是从Tree和Menu示例拼凑而成。有关更多详细信息,请参阅文档。

<?xml version="1.0" encoding="utf-8"?><mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;
        import mx.controls.Menu;
        [Bindable]
        public var selectedNode:XML;

        // Event handler for the Tree control change event.
        public function treeChanged(event:Event):void {
            selectedNode=mx.controls.Tree(event.target).selectedItem as XML;
        }

        private var prevMenu:Menu = null

        public function showMenu(event:MouseEvent):void
        {
            if(prevMenu != null)
                prevMenu.hide()
            var menu:Menu = Menu.createMenu(null, menuData, false);
            menu.labelField="@label"
            menu.show(event.stageX, event.stageY)
            prevMenu = menu
        }

    ]]>
</mx:Script>
<mx:XML id="menuData">
    <root>
        <menuitem label="copy" eventName="copy"/>
        <menuitem label="paste" eventName="paste"/>
    </root>
</mx:XML>
<mx:XMLList id="treeData">
    <node label="Mail Box">
        <node label="Inbox">
            <node label="Marketing"/>
            <node label="Product Management"/>
            <node label="Personal"/>
        </node>
        <node label="Outbox">
            <node label="Professional"/>
            <node label="Personal"/>
        </node>
        <node label="Spam"/>
        <node label="Sent"/>
    </node>    
</mx:XMLList>
<mx:Panel title="Tree Control Example" height="75%" width="75%" 
    paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10">

    <mx:Label width="100%" color="blue" 
        text="Select a node in the Tree control."/>

    <mx:HDividedBox width="100%" height="100%">
        <mx:Tree id="myTree" width="50%" height="100%" labelField="@label"
            showRoot="false" dataProvider="{treeData}" change="treeChanged(event)"
            rightClick="showMenu(event)"/>
        <mx:TextArea height="100%" width="50%"
            text="Selected Item: {selectedNode.@label}"/>
    </mx:HDividedBox>

</mx:Panel></mx:WindowedApplication>