`
qiyueguxing
  • 浏览: 66408 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Flex中tree实现的种种细节

    博客分类:
  • Flex
阅读更多

需要解决的问题:

1、自定义节点icon图标

2、右键菜单

3、右键时行选中(比较图1和图2)

4、父节点右键取消菜单(比较图3和图4)

 

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" 
			   creationComplete="init()">
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			
			private var iconArr:Array = new Array();
			private var menuItem:ContextMenuItem;
			
			[Embed(source="../assets/images/home_nav.gif")]
			[Bindable]
			private var icon_oa:Class;
			
			[Embed(source="../assets/images/text.gif")]
			[Bindable]
			private var icon_1:Class;
			
			[Embed(source="../assets/images/heap_view.gif")]
			[Bindable]
			private var icon_3:Class;
			
			[Embed(source="../assets/images/find.gif")]
			[Bindable]
			private var icon_2:Class;
			
			[Embed(source="../assets/images/readwrite_obj.gif")]
			[Bindable]
			private var icon_4:Class;
			
			[Embed(source="../assets/images/speak.gif")]
			[Bindable]
			private var icon_5:Class;
			
			
			[Bindable]
			private var xml:XML=
				<node icon="oa" label="办公自动化">                           
					<node label="公文管理">           
		        		<node id="1" icon="icon1" label="公文收发" />         
		        		<node id="2" icon="icon1" label="公文归档"/>        
		        		<node id="3" icon="icon1" label="公文查询"/>           
		        		<node id="4" icon="icon1" label="通知公告"/>           
	        		</node>                                                   
	        		<node label="人事管理">                                   
		        		<node label="历史数据查询">                             
		        			<node id="5" icon="icon2" label="离职人员查询"/>  
		        		</node>                                                 
		        		<node label="新员工入职">                             
		        			<node id="6" icon="icon3" label="基本信息"/> 
		        			<node id="7" icon="icon3" label="员工转正"/> 
		        		</node>                                                 
		        		<node label="工资管理">                                 
		        			<node id="8" icon="icon4" label="设置公式"/>       
		        			<node id="9" icon="icon4" label="工资发放"/>       
		        		</node>				                                          
	        		</node>                                                   
		        	<node label="决策支持">                                       
		        		<node id="11" icon="icon5" label="规则设置"/>              
		        	</node>                                                   
	        	</node>
				
			private function init():void{
				iconArr["oa"]=icon_oa;
				iconArr["icon1"]=icon_1;
				iconArr["icon2"]=icon_2;
				iconArr["icon3"]=icon_3;
				iconArr["icon4"]=icon_4;
				iconArr["icon5"]=icon_5;
				this.expendAllTreeNode();
				this.addTreeMenu();
				tree.contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT,rightClickHandler);
			}
				
			/*
			 * 展开树
			 */
			public function expendAllTreeNode(): void {
				tree.validateNow();
				tree.selectedIndex = 0;
				tree.expandChildrenOf(tree.selectedItem,true);
			}
			
			/*
			* 添加右键菜单
			*/
			public function addTreeMenu():void{
				var menu:ContextMenu=new ContextMenu();
				menu.hideBuiltInItems();
				menuItem=new ContextMenuItem("打开");
				menuItem.visible=false;
				menu.customItems.push(menuItem);
				tree.contextMenu=menu;
			}
			
			/*
			* 设置节点图标
			*/
			private function setIcon(item:Object):Class{
				var node:XML = item as XML;
				var nodeIcon:String = node.@icon;
				if(node!=null && nodeIcon!=null && nodeIcon.length!=0)
					return iconArr[nodeIcon];
				else 
					return null;
			}
			
			/*
			* 处理右键事件
			*/ 
			private function rightClickHandler(ev:ContextMenuEvent):void{
				menuItem.visible=false;
				var tag:Object=ev.mouseTarget;
				//右键时行选中,此处需捕获异常
				try{
					if(tag && tag.parent && tag.parent.data && (tag.parent.data is XML))
						tree.selectedItem = tag.parent.data;
				}catch(ex:Error){
				}
				
				var node:XML = tree.selectedItem as XML;
				if(node!=null && node.@id!=null){
					var nodeId:String = node.@id;
					if(nodeId.length>0)
						menuItem.visible = true;
				}
			}
		]]>
	</fx:Script>
	<s:HGroup width="30%" height="100%">
		<mx:Tree id="tree" width="100%" height="100%" dataProvider="{xml}" 
				 labelField="@label" iconFunction="setIcon" />
	</s:HGroup>
</s:Application>

 

 

图1:处理前效果

 

图2:处理后效果

------------------------------------------------------------------------------------------------------------

 

图3:处理前效果

 

 

图4:处理后效果

 

 

注意:运行环境 Flash Builder 4

  • 大小: 20.5 KB
  • 大小: 20.8 KB
  • 大小: 10.8 KB
  • 大小: 10.1 KB
分享到:
评论
3 楼 stuhack0303 2010-09-17  
。。。。。右键了,没反应。
2 楼 qiyueguxing 2010-05-12  
elvishehai 写道
怎么用不了, 开头不是mx:Application吗?

我是在flex sdk 4下运行的。Flex3的开头是mx:Application,Flex4已经换掉了,建议你更新下sdk
1 楼 elvishehai 2010-05-11  
怎么用不了, 开头不是mx:Application吗?

相关推荐

    flex带复选框的tree,flex checkboxtree

    在Flex CheckboxTree中,每个树节点都有一个与之关联的复选框。当用户点击复选框时,相应的树节点会被选中或取消选中。开发者可以通过监听CheckBoxTree的事件来处理这些变化,例如,当节点的选中状态改变时,更新...

    flex中tree和checkbox结合使用的插件

    在Flex开发中,Tree组件和Checkbox控件的结合使用是一个常见的需求,特别是在构建具有层级结构并需要用户进行多选操作的界面时。本插件专为此目的设计,它允许用户在树形结构中通过复选框来选择或取消选择节点,从而...

    flex中 Tree树节点内部拖动实例(此实例限制了什么节点可以拖动及拖动到什么位置)

    在本文中,我们将详细探讨如何在Flex的Tree组件中实现节点的拖放操作,并且限制可拖动的节点以及拖动的目标位置。 首先,我们需要了解Flex Tree组件的基本用法。Tree组件用于显示层次结构的数据,每个节点代表数据...

    Flex Tree 中Checkbox

    2. **Checkbox集成**:在Flex Tree中添加Checkbox,通常是为了提供多选功能。这需要自定义TreeItemRenderer,以便在每个节点上显示一个Checkbox。当用户勾选Checkbox时,表示选择了该节点。这个自定义的renderer需要...

    flex中利用tree中的子节点实现的导航

    flex中利用tree中的子节点与自定义组件实现的在同一页面中实现导航

    flex中tree的数据源是xml

    ### Flex中Tree的数据源是XML 在Flex应用开发过程中,我们常常需要用到树形结构(Tree)来展示分层数据。为了使数据呈现更加灵活且高效,通常会采用XML作为数据交换格式,这是因为XML具备良好的可读性和扩展性,...

    Flex tree的用法

    Flex Tree组件是Adobe Flex框架中的一个关键元素,用于在用户界面上展示层次结构的数据。它在各种应用程序中广泛使用,特别是在需要展现具有嵌套结构的数据时,如文件系统、组织结构或者复杂的分类信息。让我们深入...

    flex Tree 复选框。

    在这个特定的场景中,我们关注的是在Flex Tree中集成复选框功能,这为用户提供了一种直观的方式来选择或操作树形结构中的多个节点。让我们深入探讨这个主题,了解如何实现Flex Tree复选框以及其与父目录状态之间的...

    flex_tree扩展_时间轴

    在本文中,我们将深入探讨基于Flex的"flex_tree扩展_时间轴"这一技术主题。Flex是一种开源的、基于ActionScript的框架,用于构建富互联网应用程序(RIA),它由Adobe Systems开发。时间轴组件是Flex中一种强大的可视...

    flex 中tree渲染checkbox

    总结,通过自定义TreeItemRenderer、设置数据结构、配置itemRenderer属性以及处理复选框事件,我们可以成功在Flex的Tree组件中实现复选框渲染和多选功能。这使得用户能够更方便地在层次结构数据中进行选择操作。同时...

    flex tree 教程二

    Flex Tree是Adobe Flex框架中的一个组件,用于展示层次结构数据,如文件系统、组织结构或任何其他具有层级关系的数据。本教程将深入讲解Flex Tree组件的使用方法和关键概念,帮助开发者更好地理解和应用这一功能强大...

    Flex Tree快速定位树结点

    通过阅读和分析这些代码,你可以更深入地理解如何在Flex Tree中实现快速定位功能。 总结起来,"Flex Tree快速定位树结点"是一个提高用户交互体验的功能,它通过监听用户输入并搜索匹配的树节点,然后自动展开或选择...

    flex checkboxtree复选树形下拉框

    在Flex开发中,"flex checkboxtree复选树形下拉框"是一种常见的用户界面组件,它结合了树形结构和复选框的功能,允许用户在层次结构中进行多选操作。这种组件通常用于数据筛选、配置设置或者层级分类的选择场景。在...

    Flex Tree 的右键菜单事件

    本篇文章将深入探讨如何在Flex Tree组件中实现右键菜单。 首先,我们要了解Flex中的Event.MENU_SHOW事件,这是在用户打开右键菜单时触发的事件。为了监听这个事件,我们需要在Tree组件上添加事件监听器。代码示例...

    flex tree+checkbox级联勾选

    在IT行业中,Flex Tree是一种常用于数据展示和交互的组件,尤其在构建用户界面时,它能够以树形结构清晰地展示层次数据。配合Checkbox(复选框)功能,可以提供用户选择或过滤数据的便利操作。"Flex Tree + Checkbox...

    Flex4的Tree控件加CheckBox

    在这个场景中,我们关注的是如何在Flex4的Tree控件中添加CheckBox,以便用户可以多选树形结构中的节点。 Tree控件在Flex中用于展示层次结构的数据,它允许用户展开和折叠节点,查看和导航数据结构。在很多情况下,...

    Flex中Tree组件的数据源举例(xml,array,object)

    在Flex开发中,Tree组件是一种常用的用户界面元素,用于展示层次结构的数据。它通常用于文件系统、组织结构或任何有层级关系的数据展示。本篇将详细介绍如何为Flex中的Tree组件设置不同的数据源,包括XML、Array和...

    flex tree控件

    在Flex编程中,Tree控件是一种常用的用户界面元素,它用于显示层次结构的数据。这个“flex tree控件”主题主要关注如何自定义Tree控件的外观,特别是如何去掉默认的图标并添加线连接来增强视觉效果。下面我们将深入...

    flex Tree checkbox 修改过后的

    在Flex中实现Tree与Checkbox结合的关键点包括: 1. **创建自定义TreeItemRenderer**: 为了在每个Tree节点前面添加复选框,你需要创建一个自定义的TreeItemRenderer类。这个类将扩展默认的TreeItemRenderer,并...

Global site tag (gtag.js) - Google Analytics