- 浏览: 205114 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
sprite:
java -Xdebug -Xrunjdwp:transpor ...
izpack 调试 -
aosnowit:
这里有一套非常不错的 SparkSkin 主题皮肤,更新很频 ...
Flex Skin (Spark) -
sprite:
在windows 7下,需要用admin权限去运行cmd窗口, ...
izpack 调试 -
luhantu:
其实对于非常简单的背景色设置已经够用了……
Flex4 背景设置 -
clschen:
还有一个非主流的方式,直接设置opaqueBackground ...
Flex4 背景设置
项目中经常遇到右键菜单的问题,特别是对于Tree 或者 DataGrid 组建的右键菜单问题。
常见的问题譬如是:Tree 组件对于子节点删除、修改,在folder上显示增加的操作。
DataGrid组件选中一项,然后修改或者删除等操作。
1.对于Tree 组件,要对 Tree.contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT,onContextMenuSelectedHandler);
然后在侦听函数中查看ContextMenuEvent的mouseTarget,看看是否TreeItemRenderer,并且TreeItemRenderer的data,就可以知道选中是那个节点,并且知道此节点是否在子节点还是根节点。
2.对于DataGrid组件,要知道右键单击是选中是那一行,要在mouseOver时候调用它的protected 方法:mouseEventToItemRenderer 知道是哪一个ItemRenderer。然后在它的contextMenu监听:
contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT,contextMenu_menuSelectHandler);
在侦听方法中调用它的protected 方法:itemRendererToIndex 把ItemRenderer 转为index值。这个时候就可以让DataGrid选中这个Index,然后用selectedIndex值去处理当前选中的项了。
(注意:1.最多可以向 Flash Player 中的上下文菜单添加 15 个自定义项。AIR 中对上下文菜单中的项数没有明确限制。
2.必须在使用 ContextMenu()
构造函数创建 ContextMenu 对象后才能调用其方法。
3.还有一点需要注意,就是ContextMenuItem 还有一些限制,具体参考ContextMenuItem API )
Tree 代码:
<?xml version="1.0" encoding="utf-8"?> <s:VGroup xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="100%" height="300" xmlns:render="render.*"> <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.controls.listClasses.IListItemRenderer; import mx.events.FlexEvent; public var newBuildMenuItem:ContextMenuItem;//菜单项变量 private var itemRendererUnderPoint:IListItemRenderer; protected function tree1_creationCompleteHandler(event:FlexEvent):void { createTreeMenuItem(); tree.contextMenu = getTreeContxtMenu(); tree.contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT,onContextMenuSelectedHandler); } private function onContextMenuSelectedHandler(event:ContextMenuEvent):void { var tag:Object=event.mouseTarget; if(tag && tag.parent && tag.parent.hasOwnProperty("data") && tag.parent.data && (tag.parent.data is XML)) { if((tag.parent.data as XML).children() && (tag.parent.data as XML).children().length() > 0) { newBuildMenuItem.visible = true; } else { newBuildMenuItem.visible = false; } } } public function createTreeMenuItem(): void//菜单项创建函数,并添加菜单监听器 { newBuildMenuItem = new ContextMenuItem("Add New Folder"); newBuildMenuItem.visible = false; newBuildMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, newBuildHandler2); } private function getTreeContxtMenu(): ContextMenu//将菜单项目添加到菜单中 { var contextMenu: ContextMenu = new ContextMenu(); contextMenu.hideBuiltInItems(); contextMenu.customItems.push(newBuildMenuItem); return contextMenu; } public function newBuildHandler2(event:Event):void//点击菜单执行函数 { Alert.show("Add New Folder","Notice"); } ]]> </fx:Script> <fx:Declarations> <fx: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> </fx:XMLList> </fx:Declarations> <render:ContextAdvancedDataGrid width="100%" height="100%"/>//需要ContextAdvancedDataGrid.as 文件哦! <mx:Tree id="tree" width="50%" height="100%" labelField="@label" showRoot="false" dataProvider="{treeData}" initialize="tree1_creationCompleteHandler(event)" /> </s:VGroup>
ContextAdvancedDataGrid.as 文件(DataGrid 组件)
<?xml version="1.0" encoding="utf-8"?> <mx:AdvancedDataGrid xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" initialize="initializeHandler();"> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.listClasses.IListItemRenderer; [Bindable] private var dataCollection:ArrayCollection; private var itemRendererUnderPoint:IListItemRenderer; private var newBuildMenuItem:ContextMenuItem;//菜单项变量 override protected function mouseOverHandler(event:MouseEvent):void { itemRendererUnderPoint = super.mouseEventToItemRenderer(event); // Don't show rollOver effect for Header Items if (super.isHeaderItemRenderer(itemRendererUnderPoint)) return; super.mouseOverHandler(event); } private function initializeHandler():void { var dataArray:Array = [ {label: "C", displayCode: 1}, {label: "G", displayCode: 2}, {label: "E", displayCode: 1}, {label: "Q", displayCode: 2}, {label: "T", displayCode: 1}, ]; dataCollection = new ArrayCollection(dataArray); createContextMenu(); } private function createContextMenu():void { contextMenu = new ContextMenu(); contextMenu.hideBuiltInItems(); contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT,contextMenu_menuSelectHandler); } private function contextMenu_menuSelectHandler(event:ContextMenuEvent):void { if (itemRendererUnderPoint != null) { var rightClickIndex:int = super.itemRendererToIndex(itemRendererUnderPoint); newBuildMenuItem = new ContextMenuItem("新建"); contextMenu.customItems.push(newBuildMenuItem); if (selectedIndex != rightClickIndex) selectedIndex = rightClickIndex; } else { contextMenu.customItems = new Array(); } } ]]> </fx:Script> <fx:Declarations> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations> <mx:dataProvider> <mx:HierarchicalData source="{dataCollection}" /> </mx:dataProvider> </mx:AdvancedDataGrid>
发表评论
-
Flex 取得浏览器hostname
2015-01-03 19:02 940Flash可以被嵌入其他的服务器网页中,如果要flash取得 ... -
Flex4 背景设置
2014-12-02 14:34 1171Flex的spark组件可以用skin来设置组件的背景,但是 ... -
Flex Chart 中用dataFunction对数据进行处理
2014-11-24 16:27 1580在flex中用chart对数据展示时,有时候数据中有空值,但 ... -
Flex DataGrid 动态改变headerRender 属性&itemRender 改变单元格颜色
2014-11-24 15:34 1247很多时候会用到动态改变datagrid的headerRend ... -
Flex SDK 中没有 en_GB 语言包
2014-06-12 17:24 878在Flex国际化中,如果支持en_GB,发现SDK 中根本没 ... -
Flex 在chrome中debug连接不上
2014-05-29 10:47 1340在Chrome 中debug总是连接不上的解决方案 1. ... -
Flex 特效机制
2013-08-15 20:59 892Flex的动画效果由一个工厂类(Factory)和一 ... -
Flex 绑定机制 (ChangeWatcher & BindingUtils )
2013-08-13 12:24 2820Flex的绑定机制也是一个亮点,对于数据和显示分离提供很好 ... -
Flex 深复制 浅复制
2013-08-09 15:26 1542对于基本类型,无所谓深浅复制。 深浅复制只要是对于引用类型 ... -
Flex States 应用
2013-08-09 11:23 1452这几天做项目重构,发现一个蹊跷的问题,A类基础B类,本来不 ... -
Loader 与SWFLoader 区别
2013-07-31 14:14 1453在Flex中可以通过Loader ... -
Flex ApplicationDomain
2013-07-31 11:09 1011如果要说这个已经是一个非常长的篇幅,网上七零八落的介绍也非 ... -
Flex 截图
2013-07-26 13:44 3011Flex提供了两种方法截图,一个是BitmapData的dr ... -
继承父类并继承父类的控件
2013-07-25 15:40 2037在Flex当中,如果父类已经拥有了子元素,然后你再继承这个 ... -
Flex 带时间的DateField的
2013-07-19 17:32 4455需要做一个带时间的DateField控件。不做啰嗦,直接上 ... -
View Stack + TabBar 校验
2013-07-19 17:17 1266程序中用到view Stack + tabBar导航的导航的 ... -
Flex chart 改变图表元素的颜色
2013-06-08 16:08 4425Flex 有许许多多的chart组件,他们的父类都是Cha ... -
FlexUnit4
2013-09-25 13:30 989前些日子试用了FlexUnit4,发现真的非常的不错,非常 ... -
在flash中捕获所有的报错 (Catch All Exception in Flash)
2013-03-07 10:31 1908在Flash Player 10.1及以上版本中,adobe ... -
Flex3与Flex4 类结构图
2012-12-24 16:59 0Flex3 和 Flex4中的显示对象都是继承自UICompo ...
相关推荐
在Flex开发中,自定义右键菜单是一项常见的需求,它能为用户界面提供更丰富的交互体验。Flex是一款基于ActionScript 3.0的开源框架,主要用于构建富互联网应用程序(RIA)。在这里,我们将深入探讨如何在Flex中实现...
在"WPF分页DataGrid"中介绍了如何实现分页功能,本文中介绍如果实现右键菜单。点击菜单项Age,将Age列隐藏,再点击则显示;并实现移动列后,同步显示。 详见:...
在这个"EasyUI datagrid+tree右键+window弹出层"的示例中,我们将深入探讨这三个核心组件的综合应用。 1. EasyUI Datagrid(数据网格): Datagrid是EasyUI中的一个关键组件,用于展示和管理表格数据。它可以实现...
本知识点将详细介绍如何在Flex 4.5环境中将Excel和CSV文件导入到DataGrid中,以及如何自定义DataGrid选中行的右键菜单,从而提升用户界面的交互性和实用性。 首先,我们需要了解Flex 4.5中的DataGrid组件。DataGrid...
在这个主题中,我们将探讨 EasyUI 的几个核心知识点:基本布局、tree 菜单数据的绑定、DataGrid 数据查询和数据绑定以及分页功能。 首先,我们来看 EasyUI 的基本布局。EasyUI 提供了一套灵活的布局系统,允许...
在Flex开发中,给DataGrid添加右键菜单项是一个常见的需求,这允许用户通过鼠标右键触发特定的操作,如编辑、删除或自定义功能。以下是一个详细的教程,讲解如何在Flex项目中实现这一功能。 首先,我们需要创建一个...
本文将详细介绍如何在Jquery EasyUI的Datagrid组件中实现右键菜单的功能。 首先,我们需要准备HTML结构,用于展示右键菜单。通过HTML代码,我们可以定义一个隐藏的菜单DIV,并在其中加入具体的菜单项,例如删除和...
"Flex4实现的右键完整功能"这个主题聚焦于如何利用Adobe Flex 4框架来增强数据网格(DataGrid)组件的交互性,特别是通过鼠标右键菜单实现数据的添加、删除和修改操作。Flex 4是ActionScript 3.0基础上的一个强大的...
EasyUI 是一个基于 jQuery 的前端框架,用于快速构建用户界面,尤其在开发 Web 应用时,它提供了丰富的组件库,其中包括我们今天要讨论的 Tree 和 DataGrid。这两个组件在数据展示和操作中扮演着重要角色。 Tree ...
在Flex开发中,Datagrid组件是用于展示数据集的一个强大工具,它允许用户以表格的形式查看和操作数据。本文将深入探讨如何在Flex的Datagrid中实现数据的合计与平均值计算,帮助开发者更好地理解和应用这些功能。 ...
1. DataGrid:在DataGrid中,右键菜单可以提供编辑、删除、复制等针对行或单元格的操作。 2. ListView:对于ListView,右键菜单可以提供添加、编辑、排序等操作。 3. 其他控件:任何可以有上下文操作的控件,如...
在Flex开发中,`Datagrid`组件是一种常用的展示数据列表的控件,而分页和数据高亮显示是提升用户体验的重要功能。本篇主要探讨如何在Flex的`Datagrid`中实现分页定位和高亮显示。 首先,分页定位涉及的主要任务是...
总结起来,"Flex4之DataGrid四个的示例【客户端和服务器端】"这一主题涵盖了使用Flex4的DataGrid组件展示和处理数据的基本技巧,包括客户端数据绑定、服务器端交互以及JSON数据的使用。通过具体的示例,开发者可以...
在这个"Flex-DataGrid源码及资料"的压缩包中,包含了一些关键特性,如鼠标右键菜单、鼠标双击编辑、插入复选框以及数据集的双向绑定。下面将对这些功能进行详细介绍。 1. 鼠标右键:在Flex DataGrid中添加鼠标右键...
`DataGridView`用于展示数据,而`ContextMenuStrip`则用于显示右键菜单。在设计界面时,可以通过属性窗口设置这两个控件的相关属性。 对于`dataGridView1`,我们需要设置以下属性: 1. `SelectionMode` 属性设置为 ...
在Flex4中,数据展示是应用程序开发中的重要环节,而DataGrid和Tree组件则是Adobe Flex提供的两种常用的数据展示工具。这两个组件允许开发者以表格或树形结构显示数据,提供了丰富的功能和灵活性,使得用户可以更好...
EasyUI 是一个基于 jQuery 的前端框架,主要用于构建用户界面,特别是对于企业级应用而言,它提供了丰富的组件,如对话框、表单、菜单、树形控件(Tree)和数据网格(DataGrid)等。在本项目中,"EasyUI tree 及 ...
在Flex编程领域,DataGrid组件是开发者们常用的数据展示工具,尤其在处理大量结构化数据时,它能提供高效、可定制化的展示效果。本文将深入探讨Flex DataGrid的高级用法,通过实例源码来解析其核心特性,帮助开发者...