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

Flex tabNavigator 的初级应用

    博客分类:
  • Flex
阅读更多

 

 

 

<?xml version="1.0" encoding="utf-8"?>   
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"    
				xmlns:flexlib="http://code.google.com/p/flexlib/"  
				creationComplete="init()" fontSize="12">   
	<mx:Script>   
		<![CDATA[   
			import flexlib.controls.tabBarClasses.SuperTab;
			import flexlib.events.SuperTabEvent;
			
			import mx.containers.dividedBoxClasses.BoxDivider;
			import mx.controls.Alert;
			import mx.controls.Button;
			import mx.core.EventPriority;
			import mx.events.FlexEvent;   
			
			private var tabMenu:ContextMenu;   
			private var  close_cur:String="关闭当前页";   
			private var  close_other:String="关闭其他页";   
			private var  close_all:String="关闭所有页";   
			private var closeTabItem:ContextMenuItem;   
			private var closeOthersItem:ContextMenuItem;   
			private var closeAllItem:ContextMenuItem;   
			
			[Embed(source="assets/home.png")]   
			private var home_icon:Class;   
			[Embed(source="assets/app.png")]   
			private var app_icon:Class;   
			
			
			
			private function init():void{   
				this.initCompents();   
				this.addTabNavigator();   
				//延后执行   
				callLater(addTabMenu);   
				this.addGuiListeners();                
			}   
			
			//初始化某些组件   
			private function initCompents():void{   
				tabMenu = new ContextMenu();   
				closeTabItem = new ContextMenuItem(close_cur);   
				closeOthersItem = new ContextMenuItem(close_other);   
				closeAllItem = new ContextMenuItem(close_all);   
				tabMenu.hideBuiltInItems();   
				tabMenu.customItems.push(closeTabItem);   
				tabMenu.customItems.push(closeOthersItem);   
				tabMenu.customItems.push(closeAllItem);   
				
				//处理中间分隔条   
				var bdriver:BoxDivider=this.hdbox.getDividerAt(0);   
				bdriver.doubleClickEnabled=true;   
				bdriver.addEventListener(MouseEvent.DOUBLE_CLICK, maxsizeHandler);   
				
			}   
			//添加几个tab页   
			private function addTabNavigator():void{   
				for(var i:uint=0;i<5;i++ ){   
					var vbox:VBox=new VBox();   
					vbox.label="Tab"+i;   
					if(i==0){   
						vbox.label="首页";   
						vbox.icon=home_icon;   
					}else  
						vbox.icon=app_icon;   
					tabs.addChild(vbox);   
				}   
			}   
			//给tab页添加菜单   
			private function addTabMenu():void{   
				//设置首页不可关闭   
				this.tabs.setClosePolicyForTab(0,SuperTab.CLOSE_NEVER);   
				for(var i:uint=0;i<tabs.getChildren().length;i++){   
					var tabBtn:Button=tabs.getTabAt(i);   
					//添加双击tab页事件监听   
					tabBtn.addEventListener(MouseEvent.DOUBLE_CLICK,maxsizeHandler);   
					tabBtn.contextMenu=tabMenu;                    
				}   
			}   
			
			private function addGuiListeners():void{   
				closeTabItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,tabRightMenuHandler);   
				closeOthersItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,tabRightMenuHandler);   
				closeAllItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,tabRightMenuHandler);   
				tabMenu.addEventListener(ContextMenuEvent.MENU_SELECT,tabMenuHandler);   
				this.tabs.addEventListener(SuperTabEvent.TAB_CLOSE,closeSuperTabHandler);   
				
			}   
			//取消双击tab页事件的监听   
			private function closeSuperTabHandler(ev:SuperTabEvent):void{   
				var tabIdx:Number = ev.tabIndex;   
				var tabBtn:Button=tabs.getTabAt(tabIdx);   
				tabBtn.removeEventListener(MouseEvent.DOUBLE_CLICK,maxsizeHandler);   
			}   
			//最大化   
			private function maxsizeHandler(ev:Event):void{   
				if(this.leftBox.percentWidth==0){   
					this.leftBox.percentWidth=20;   
					this.rightBox.percentWidth=80;   
				}else{   
					this.leftBox.percentWidth=0;   
					this.rightBox.percentWidth=100;   
				}   
			}   
			//处理tab右键关闭事件   
			private function tabRightMenuHandler(ev:ContextMenuEvent):void{   
				var cap:String = (ev.target as ContextMenuItem).caption;   
				var home:* = this.tabs.getChildAt(0);   
				var idx:int;   
				switch(cap){   
					case close_cur:   
						idx = this.tabs.selectedIndex;   
						if(idx >= 0)   
							this.tabs.removeChildAt(idx);   
						break;   
					case close_other:   
						var selected:* = this.tabs.selectedChild;   
						for each(var cnt:* in this.tabs.getChildren()){   
						if(cnt != selected && cnt != home){   
							this.tabs.removeChild(cnt);   
						}   
					}   
						break;   
					case close_all:   
						//                      this.tabs.removeAllChildren();   
						for each(var tab:* in this.tabs.getChildren()){   
						if(tab != home)   
							this.tabs.removeChild(tab);   
					}   
						break;   
				}   
			}   
			
			private function tabMenuHandler(ev:ContextMenuEvent):void{   
				var tag:DisplayObject=ev.mouseTarget as DisplayObject;   
				var idx:uint=this.tabs.selectedIndex;   
				if(tag){  
					//下面这句非常犀利,发送一个单击事件
					tag.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
					closeTabItem.visible = true;   
					closeOthersItem.visible = true;   
					closeAllItem.visible = true;   
					if(idx==0)   
						closeTabItem.enabled = false;   
					else  
						closeTabItem.enabled = true;   
					
					if(this.tabs.numChildren==1 || (this.tabs.numChildren==2 && idx>0))   
						closeOthersItem.enabled = false;   
					else  
						closeOthersItem.enabled = true;   
					
					if(this.tabs.numChildren==1 && idx==0)   
						closeAllItem.enabled = false;   
					else  
						closeAllItem.enabled = true;   
					
					return;   
				}   
				closeTabItem.visible = false;   
				closeOthersItem.visible = false;   
				closeAllItem.visible = false;   
			}   
		]]>   
	</mx:Script>   
	<mx:VBox width="100%" height="100%">   
		<mx:Spacer height="20" />   
		<mx:HDividedBox id="hdbox" width="100%" height="80%" liveDragging="true">   
			<mx:VBox id="leftBox" width="20%" height="100%">   
				<mx:Tree width="100%" height="100%"/>   
			</mx:VBox>   
			<mx:VBox id="rightBox" width="80%" height="100%">   
				<flexlib:SuperTabNavigator id="tabs" width="100%" height="100%" creationPolicy="all" paddingTop="1">   
				</flexlib:SuperTabNavigator>   
			</mx:VBox>   
		</mx:HDividedBox>   
	</mx:VBox>   
</mx:Application>  

 

  • 大小: 16.4 KB
  • 大小: 16.8 KB
  • 大小: 13.7 KB
分享到:
评论
2 楼 marcucuckoo 2010-09-20  
学习了........
1 楼 Vimesly 2010-09-20  
  学习了。。!

相关推荐

    flex TabNavigator tab倒置

    在Flex开发中,TabNavigator组件是常用于创建带有选项卡的用户界面的工具。它允许用户在多个视图之间切换,每个视图对应一个选项卡。"flex TabNavigator tab倒置"这个标题可能指的是开发者想要实现一个特殊的布局,...

    flex3 tabnavigator一个很好的例子

    TabNavigator是Flex中的一个组件,用于构建带有多个选项卡的应用界面,每个选项卡可以承载不同的视图或功能模块。这个例子可能是为了展示如何在Flex3中有效地使用TabNavigator来组织和管理用户界面。 在Flex3中,...

    Flex3 竖排TabNavigator

    接下来,在你的Flex应用程序中,实例化TabNavigator并将其layout属性设置为刚刚创建的VerticalTabLayout类。这样,TabNavigator的标签就会按照垂直方向排列。 ```actionscript &lt;mx:TabNavigator id=...

    Flex4.6 带图标的TabNavigator的使用

    在Flex4.6中,`TabNavigator`是一个强大的组件,用于创建带有可切换选项卡的用户界面。这个组件允许用户通过点击不同的标签在多个视图之间进行导航,这对于组织大量内容或者提供多工作区的界面非常有用。在这个“带...

    flex 遮盖式 TabNavigator

    - Flex Builder或Flash Builder:这些是开发Flex应用的主要IDE,提供了图形界面设计工具和源代码编辑器,帮助开发者创建和调试TabNavigator。 - CSS编辑:可能需要使用CSS来调整TabNavigator的样式,如边框、背景...

    Flex3 TabNavigator

    在Flex3中,TabNavigator是一种容器控件,用于展示多个视图,并且这些视图可以通过标签页进行切换。TabNavigator的每个标签页通常关联一个ViewStack或其他容器,用于存放不同的内容。然而,标准的TabNavigator并不...

    flex 和 flexlib类库 实现 菜单和 TabNavigator

    NULL 博文链接:https://toeo.iteye.com/blog/644341

    flex TabNavigatorTab 选项卡标题标签皮肤设置

    这是一个封装好的flex项目,可以直接运行,TestTabNavigator.mxml是运行主页。里面定义了TabNavigator控件选中与被选中的皮肤类,皮肤类可以自己进行更改,也可以设置颜色渐变等等。希望对大家有帮助。

    自定义ActionBar外观(flex4手机应用)

    Flex4是Adobe Flex框架的一个版本,它基于ActionScript 3和Flash Player或Adobe AIR运行时,用于构建富互联网应用(RIA)和移动应用。AS3是Flex4的主要编程语言,提供了强大的面向对象特性。 在Flex4中,ActionBar...

    flex的ppt(flex和java的整合及flex组件的应用共31章)

    第二到第五章可能深入到Flex组件库的使用,包括各种基本和高级组件,如Button、Label、TextInput、TextArea、List、Accordion、TabNavigator等。这些组件能够快速构建用户友好的交互界面。 第六至第十章可能会讲解...

    Flex中TabNavigator设置Tabs样式思路及

    在Flex应用中,为了提升用户体验,通常需要对TabNavigator的Tabs进行样式定制,使得它们更符合应用的风格和美观要求。 首先,设计思路是至关重要的,它决定了最终Tabs的样式。在Flex中,我们可以通过设置属性、添加...

    设置TabNavigator组件的标签头的自定义皮肤

    在开发移动应用或者Web应用时,常常会使用到导航组件来组织不同的页面,其中TabNavigator是一种常见的导航方式,它在底部或顶部展示一系列标签,用户可以通过点击这些标签切换不同的页面。在React Native或React.js...

    flex+jsp web 应用开发源代码前十一章

    在这一章,你会接触到更复杂的Flex组件,比如DataGrid、Accordion和TabNavigator,以及如何自定义组件以满足特定需求。此外,还会介绍如何使用Layout Manager进行布局管理,以优化用户界面的显示效果。 第6章:图形...

    Flex 3企业级 Web应用系统设计与实现

    Flex 3是Adobe公司开发的一款强大的富互联网应用程序(RIA)框架,主要用于构建具有高度交互性和动态视觉效果的Web应用。本篇文章将深入探讨Flex 3在企业级Web应用系统设计与实现中的关键技术和实践。 一、Flex 3...

    [使用Flex4.5开发黑莓平板应用].源代码

    此样本可能展示了如何使用Flex的TabNavigator组件创建带有多个标签页的应用。 10. **SQLiteSample.fxp**:SQLite是嵌入式数据库,常用于存储应用数据。这个样本可能包含了如何在Flex应用中使用SQLite数据库,进行...

    flex中文帮助.rar

    5. **Flex组件**:Flex包含一系列预定义的UI组件,如Button、Label、Canvas、Accordion、TabNavigator等,这些组件可以帮助快速构建用户界面。 6. **数据绑定**:Flex支持数据绑定,这意味着UI组件的状态可以直接与...

    Flex+JSPWeb应用开发实战详解,全部源代码之第5章-第8章

    这部分内容涵盖了Flex中高级组件的使用,如Accordion、TabNavigator等,以及如何通过Timeline、TransitionManager等工具创建平滑的动画效果。同时,章节还会讨论Flex的皮肤定制,以满足不同设计需求。 通过学习这四...

    FLEX3程序的皮肤集合

    1. **组件皮肤**:Flex3中的每个UI组件,如Button、Slider、TabNavigator等,都有预定义的皮肤。这些皮肤由MXML或ActionScript3代码定义,包含组件的各个部分,如背景、边框、文本样式等。通过替换这些皮肤,可以...

    flex for android 90分钟 完全入门

    3. **Flex组件库**:了解Flex提供的丰富组件库,如Button、TextInput、Label等基本UI元素,以及Canvas、Accordion、TabNavigator等高级组件,这些组件可以帮助快速构建复杂的用户界面。 4. **数据绑定**:熟悉Flex...

Global site tag (gtag.js) - Google Analytics