我有一个Flex应用程序,运行Flash Player,而不是AIR,包含Tree
,我想在其上放置自定义上下文菜单。
试图做<mx:Tree ... contextMenu="{MyClassWithStatic.menu}">
,但这没有做任何事情。
进行搜索,并在某处找到了某些Adobe文档的引用
在Flex或Flash Builder中,只有应用程序中的顶级组件可以具有上下文菜单。例如,如果DataGrid控件是TabNavigator或VBox容器的子项,则DataGrid控件不能拥有自己的上下文菜单。
所以向上,尝试每个父元素,直到我到达我的<Application>
- 元素,这与他们写的内容一致。
尝试根据包含我的树的Group(默认值)和顶级元素的上下文菜单制作Flex组件,希望它可以工作,但无济于事。
还有其他方法来管理我尚未找到的吗?
我用来创建菜单的代码:
var menuItems:Array = [];
var rename:ContextMenuItem = new ContextMenuItem("Rename");
rename.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, renameSelectedHandler);
menuItems.push(rename);
menu.customItems = menuItems;
menu.hideBuiltInItems();
答案 0 :(得分:2)
你是对的,contextmenu只适用于顶级组件。这是Flex的一个限制,它很烦人,不应该首先出现在那里。除了使用一些Javascript技巧之外,除了使用某些Javascript技巧之外无法捕获事件,因此没有太多可以做的事情,但即便如此,它也没有告诉您在哪里点击。
如果我是你,我会忘记这个概念,如果可能的话,完全不再使用右键点击。
答案 1 :(得分:0)
我无法确定,因为所有代码都没有。但你似乎忽略了自己的研究。不要使用新组件或“包含”树的任何内容。然后将树粘贴在您的应用程序中。
此外,我对TreeItemRenderer的记忆与其他UI组件的记忆不同。也许,先用Datagrid测试你的“菜单”代码并确保它有效。祝你好运
答案 2 :(得分:0)
我自己没有尝试过,但在阅读http://michael.omnicypher.com/2007/02/flex-trees-with-context-menu_14.html上的评论之后,看起来您可以在树的项目渲染器中添加上下文菜单。
http://blog.arc90.com/2008/04/21/adding-a-contextmenu-to-a-flex-tree/上的文章和评论也值得一看。