`

Flex Tree 组件使用的两个小技巧

    博客分类:
  • Flex
阅读更多

学习了一段时间的Flex,感觉Flex再成熟一些的话,Flex就很有可能成为视图层的最主流技术了.期待着Flex4,Flex5的改进吧.
这篇短文说一下使用Flex中树组件过程中两个使用小技巧吧.
可能刚刚学习的朋友会发现树组件的以下两个小问题:

  • 点击一个非叶子节点的时候,Tree组件不自动的展开或关闭他的子节点.
  • 点击同一个节点第二次的时候change事件是不触发的.

下边的小例子解决这两个小问题:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" borderStyle="none" cornerRadius="0">

   	<mx:XMLList id="treeData">
    <node id="10000" label="评估计划">
	    <node  id="10100" label="计划生成器">
	        <node  id="10101" label="新建计划" canvas="javaest.FirstCanvas"/>
	        <node  id="10102" label="复制计划" canvas="javaest.SecondCanvas"/>
		</node>	        
	    <node  id="10200" label="计划管理">
	        <node  id="10201" label="将计划转为准备运行" canvas="javaest.GetProductList"/>
	        <node  id="10202" label="将计划转为正在配置" canvas="javaest.SecondCanvas"/>
	        <node  id="10203" label="查询计划状态" canvas="javaest.FirstCanvas"/>
	    </node>	  
	    <node id="10300" label="我的博客">
	    	<node id="10301" label="北边村人" canvas="javaest.iteye.com"/>
	    	
	    </node>
	</node>
    </mx:XMLList>

   	<mx:Script>
        <![CDATA[
        	import mx.controls.Image;
        	import mx.controls.Button;
        	import mx.containers.Canvas;
        	import mx.controls.Alert;
            private function addNewTabPage(event:Event):void {
            	var selectedNode:XML=Tree(event.target).selectedItem as XML;
            	var id:String=selectedNode.@id;
            	var label:String=selectedNode.@label;
            	var canvasClassName:String=selectedNode.@canvas;
            	Alert.show(label); 
           	    if (functionTree.dataDescriptor.isBranch(selectedNode)) { 
                    functionTree.expandItem(selectedNode, !functionTree.isItemOpen(selectedNode)); 
                }            	
            	Tree(event.target).selectedItem=null; 
            }   

     ]]>
    </mx:Script>
	<mx:Panel width="100%" height="100%"  dropShadowEnabled="false" title="新闻管理">
    	<mx:Tree  id="functionTree"   change="addNewTabPage(event)" width="100%" height="100%" enabled="true" showRoot="true"  dataProvider="{treeData}"  labelField="@label" borderStyle="none">
        </mx:Tree> 
    </mx:Panel>
</mx:Application>

 其中34,35,36行解决了第一个问题
37解决了第二个问题

 

或者:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" borderStyle="none" cornerRadius="0">

   	<mx:XMLList id="treeData">
    <node id="10000" label="评估计划">
	    <node  id="10100" label="计划生成器">
	        <node  id="10101" label="新建计划" canvas="javaest.FirstCanvas"/>
	        <node  id="10102" label="复制计划" canvas="javaest.SecondCanvas"/>
		</node>	        
	    <node  id="10200" label="计划管理">
	        <node  id="10201" label="将计划转为准备运行" canvas="javaest.GetProductList"/>
	        <node  id="10202" label="将计划转为正在配置" canvas="javaest.SecondCanvas"/>
	        <node  id="10203" label="查询计划状态" canvas="javaest.FirstCanvas"/>
	    </node>	  
	    <node id="10300" label="我的博客">
	    	<node id="10301" label="北边村人" canvas="javaest.iteye.com"/>
	    	
	    </node>
	</node>
    </mx:XMLList>

   	<mx:Script>
        <![CDATA[
        	import mx.controls.Image;
        	import mx.controls.Button;
        	import mx.containers.Canvas;
        	import mx.controls.Alert;
            private function addNewTabPage(event:Event):void {
            	var selectedNode:XML=Tree(event.target).selectedItem as XML;
            	var id:String=selectedNode.@id;
            	var label:String=selectedNode.@label;
            	var canvasClassName:String=selectedNode.@canvas;
            	Alert.show(label); 
           	    if (functionTree.dataDescriptor.isBranch(selectedNode)) { 
                    functionTree.expandItem(selectedNode, !functionTree.isItemOpen(selectedNode)); 
                }            	
            	//Tree(event.target).selectedItem=null; 
            }   

     ]]>
    </mx:Script>
	<mx:Panel width="100%" height="100%"  dropShadowEnabled="false" title="新闻管理">
    	<mx:Tree  id="functionTree"   itemClick="addNewTabPage(event)" width="100%" height="100%" enabled="true" showRoot="true"  dataProvider="{treeData}"  labelField="@label" borderStyle="none">
        </mx:Tree> 
    </mx:Panel>
</mx:Application>
 
分享到:
评论

相关推荐

    Flex4_DataGrid_Tree_条目渲染器_源码

    在"Flex4_DataGrid_Tree_条目渲染器_源码"这个资源中,"My05_01_小老虎_List_Tree"可能包含了关于如何使用和自定义这两个组件的示例代码。你可以从中学习到如何创建和配置DataGrid和Tree,以及如何定义和应用自定义...

    flex3的cookbook书籍完整版dpf(包含目录)

    flex3的cookbook书籍完整版dpf(包含目录),目录是我花了两个多小时自己整理的,希望对大家有帮助。 目录: 第一章.Flex与ActionScript基础(3) 1.1节.用FlexBuilder创建Flex项目 1.2节.用FlexBuilder创建Flex库项目 ...

    flex题目大全

    - **答案**:`addEventListener`方法接受两个主要参数: - `eventType`: 事件类型字符串。 - `listener`: 事件处理函数。 #### 19. 用AS3如何自定义一个事件? - **答案**: - **示例代码**: ```as3 import ...

    python语言mido16音轨简谱播放器QZQ-2025-5-4.zip

    python语言mido16音轨简谱播放器QZQ-2025-5-4.zip

    SSM框架下的酒店管理系统——JavaWeb课程设计实习项目

    JavaWeb课程设计实习项目—基于SSM的酒店管理系统。本项目是面向计算机相关专业学生及Java学习者的酒店管理系统,适用于毕设、实战练习或期末大作业。包含项目源码、数据库脚本、软件工具及说明文档,确保可以运行。 后台管理功能包括: - 会员信息管理:显示并删除会员 - 客房信息管理:添加和删除客房类型与客房,编辑客房信息(评论管理未实现) - 预定信息管理:查看和删除用户预订 - 入住信息管理:添加入住记录,结账及删除已结账的入住信息 用户端功能包括: - 登录注册、客房预订、客房评论(编写与查看)。内容来源于网络分享,如有侵权请联系我删除。

    anaconda基础教程-Anaconda 使用教程.zip

    为什么要使用 Anaconda? Anaconda 附带了一大批常用数据科学包,它附带 Python 和 conda,还有 150 多个科学包及其依赖项,因此可以快速的进行科学开发。 拥有 conda 包管理工具,和 pip 配合可以很方便的管理 Python 包。 可以创建虚拟环境。 什么是虚拟环境? 举个例子,假设我是一名人工智能课和 Python 课的老师,人工智能课需要 Python3.7 环境,而 Python 课需要 Python3.6 环境,一台电脑很难让两种环境共存,并且会出现依赖紊乱的问题,那么怎么办呢?这就需要用到虚拟环境了。为两种课程创建两个不同的虚拟环境,并且这两个环境互相独立不受干扰,就可以完美的解决不同环境下的工作需求了。 Anaconda 安装 奶牛网盘已到期无法使用,请自行到官网下载对应自己操作系统的版本。 从官网下载二进制文件贼慢,我已经下载好放到奶牛网盘了(交过钱了,不限速),点击下载 Anaconda PS:请下载对应自己操作系统的二进制文件。

    高校人员管理系统 2025免费毕设附带论文 SpringBoot+Vue.js

    2025免费毕设附带论文 SpringBoot+Vue.js 启动教程: https://www.bilibili.com/video/BV11ktveuE2d/?share_source=copy_web 二开教程:https://www.bilibili.com/video/BV18i421i7Dx/?share_source=copy_web 讲解视频:https://www.bilibili.com/video/BV1Tb421n72S/?share_source=copy_web

    LLM大模型(通义千问)部署:基于魔搭平台

    LLM大模型(通义千问)部署:基于魔搭平台

    射频电路设计中LNA、PA、Mixer的CMOS实现与仿真教程 射频电路设计 射频电路设计实战教程:CMOS低噪声放大器、功率放大器与混频器设计实例,仿真教程及工程文件全套 (包含输出结果截图,附送6

    内容概要:本文详细介绍了射频电路设计中三个重要组件——低噪声放大器(LNA)、功率放大器(PA)和混频器(Mixer)的设计实例及其仿真教程。针对每个组件,从参数设定、电路设计到仿真验证进行了全面讲解,并提供了详细的输出结果截图。此外,还附带了完整的工程文件和库包,便于读者实际操作和学习。主要内容涵盖CMOS工艺下各组件的具体设计方法、性能参数的选择依据及优化技巧,旨在帮助读者掌握高效的射频系统设计技能。 适合人群:从事射频电路设计的研究人员和技术爱好者,尤其是希望深入了解LNA、PA、Mixer设计细节的专业人士。 使用场景及目标:适用于高校教学、企业培训和个人自学等多种场合。通过本教程的学习,读者能够独立完成基本的射频电路设计任务,提高解决实际问题的能力。 其他说明:随书赠送618优惠券和VMware软件,进一步提升用户体验。

    P2构型插电式混合动力汽车ECMS能量管理策略的手动建模与仿真分析 ECMS

    内容概要:本文详细介绍了P2构型插电式混合动力汽车(P2 PEHV)的能量管理策略(ECMS),重点在于手动搭建等效燃油消耗最小化模型及其仿真结果。作者通过MATLAB/Simulink实现了ECMS策略,包括动态调整等效因子以优化燃油和电力消耗平衡,以及利用三维插值处理发动机MAP图。文中展示了WLTC工况下的仿真结果,并讨论了不同等效因子对SOC和油耗的影响。此外,还提到了一些实用的调参技巧和特殊工况下的电机扭矩补偿机制。 适合人群:从事新能源汽车研究的技术人员、高校相关专业师生、对混合动力汽车能量管理系统感兴趣的工程技术人员。 使用场景及目标:适用于希望深入了解P2构型插电式混合动力汽车能量管理策略的研究人员和技术开发者。目标是掌握ECMS策略的具体实现方法,理解其背后的数学模型和物理意义,从而应用于实际车辆的设计与优化。 其他说明:文中提供的模型和代码片段有助于读者更好地理解和复现实验结果,同时强调了实际应用中需要注意的关键技术和细节。

    基于NRBO-XGBoost算法的优化与交叉验证:数据回归到多变量时序预测的全面指南 牛顿-拉夫逊优化

    内容概要:本文详细介绍了基于牛顿-拉夫逊优化(NRBO)的XGBoost算法在数据回归和多变量时序预测中的应用。文章首先解释了NRBO的基本原理,包括Newton-Raphson搜索规则(NRSR)和陷阱避免算子(TAO),并通过五折交叉验证有效抑制过拟合。文中提供了完整的Matlab代码,适用于多种数据集,并支持将XGBoost替换为其他模型如RF、SVM、BP、LSTM等。此外,还讨论了常见的数据格式问题和模型替换注意事项,确保初学者能够顺利上手。 适合人群:具备基础编程能力的新手和小白,尤其是对机器学习和数据分析感兴趣的初学者。 使用场景及目标:① 使用NRBO优化XGBoost进行数据回归和多变量时序预测;② 学习如何通过五折交叉验证提高模型泛化能力;③ 掌握不同模型之间的切换方法以及参数调整技巧。 其他说明:本文提供的代码已调试完毕,只需替换数据集即可运行。同时,代码中有详细的中文注释,便于理解和学习。

    C语言的冒泡排序法的实现

    在这里我整理了所有的排序法,这篇资源内容为C语言的冒泡排序法,适用于大学生的实验或者简单实践项目,也适用与刚刚开始学习C语言的人员

    毕业设计-螃蟹投票 1.7.5-整站商业源码.zip

    毕业设计-螃蟹投票 1.7.5-整站商业源码.zip

    完整版正确程序代码QZQ.zip

    完整版正确程序代码QZQ.zip

    基于ADRC控制的Matlab Simulink半车主动悬架建模及其与PID控制的性能对比 ADRC控制 基于ADRC控制的Matlab Simulink半车主动悬架建模:效果对比与输出分析

    内容概要:本文详细探讨了基于ADRC(自抗扰控制)的Matlab Simulink半车主动悬架建模方法及其控制效果。文章首先介绍了半车主动悬架模型的重要性,然后深入讲解了ADRC控制的基本原理及其在悬架系统中的应用。ADRC控制通过自我抗扰实现了对系统的精确控制,尤其适用于非线性、时变和不确定的系统。文中还展示了ADRC控制在车身加速度、悬架动挠度和轮胎动变形等方面的优化表现,并将其与传统的PID控制进行对比,结果显示ADRC控制在复杂路况下表现出显著优势。最后,文章提供了具体的Matlab/Simulink建模和仿真实验步骤,验证了ADRC控制的有效性。 适合人群:汽车工程专业学生、从事车辆控制系统研究的研究人员和技术人员。 使用场景及目标:①理解和掌握ADRC控制在半车主动悬架中的应用;②评估ADRC控制相对于传统PID控制的优势;③利用Matlab/Simulink进行悬架系统建模和仿真。 其他说明:本文不仅提供了理论分析,还包括实际的建模和仿真实例,有助于读者全面理解ADRC控制的实际应用。

    h3-eflasher-friendlycore-jammy-4.14-armhf-20250510刷机之后可以直接连接移远的EC200A-CN-没有删除临时文件.img.7z

    h3-eflasher-friendlycore-jammy-4.14-armhf-20250510刷机之后可以直接连接移远的EC200A-CN-没有删除临时文件.img.7z 1、h3-sd-friendlycore-xenial-4.14-armhf-20210618.img.gz 在WIN10下使用7-ZIP解压缩/ubuntu20.04下使用tar 2、Win32DiskImager.exe 写如32GB的TF卡。【以管理员身份运行】 3、TF卡如果已经做过会有3个磁盘分区,可以使用SD Card Formatter/SDCardFormatterv5_WinEN.zip格式化TF卡。DiskGenius可以尝试。 制作好Ubuntu core22.04.3系统的IMG固件之后,还需要你编辑TF卡中的文件: 1、修改H:\eflasher.conf autoStart=/mnt/sdcard/friendlycore-jammy autoExit=true 2、root@NanoPi-NEO-Core:/opt# vi run-eflasher.sh root@NanoPi-NEO-Core:/opt# cat run-eflasher.sh poweroff 如果能够直接编辑IMG固件就好了。到时候写TF卡之后不需要每次都来编辑这两个文件。 20250519使用TF卡将NanoPi NEO core开发板刷机为Ubuntu core22.04.3系统完成之后执行poweroff自动关机 2025/5/19 15:38

    光伏储能双向功率换流器:核心技术、仿真与源码解析

    内容概要:本文详细介绍了光伏功率转换系统(光伏PCS)中的储能双向功率换流器,涵盖双向DC/DC换流器和3 Level逆变器的工作原理和技术特点。文中不仅解释了这两种关键技术的作用,还探讨了并网和离网模式下的仿真和源码控制逻辑。此外,提供了原理图PDF和相关参考文档,帮助读者深入了解系统的组成和运行机制。最后,通过代码片段展示了实际应用中的控制算法和调制策略,强调了这些技术在光伏系统高效稳定运行中的重要性。 适合人群:从事光伏系统设计、开发和维护的专业技术人员,以及对光伏技术和储能系统感兴趣的科研人员。 使用场景及目标:适用于希望深入了解光伏PCS和储能双向功率换流器工作原理的研究人员和技术人员,旨在提升他们对该领域的理论认知和实际操作能力。 其他说明:尽管实物已不在,但丰富的资料和详细的解析仍为学习和研究提供了坚实的基础。

    基于Python+Django+MySQL的个性化图书推荐系统:协同过滤推荐与智能部署 协同过滤

    内容概要:本文介绍了基于Python、Django和MySQL构建的个性化图书推荐系统。该系统不仅提供常规的图书浏览和管理功能,还实现了基于用户和项目的协同过滤推荐算法,以提供个性化的图书推荐。此外,系统支持远程安装部署,确保了系统的灵活性和易用性。具体功能包括用户注册、登录、图书浏览、搜索、评分、收藏、评论等,同时管理员可以通过后台管理系统进行用户管理和图书管理。个性化推荐功能分为热点推荐和基于协同过滤的个性化推荐,后者根据用户的评分数据和其他用户的喜好进行推荐,若无合适推荐则采用兴趣标签随机推荐。 适合人群:对Web开发感兴趣的开发者,尤其是熟悉Python和Django框架的技术人员,以及对个性化推荐系统有需求的图书馆或在线书店运营者。 使用场景及目标:适用于希望提升用户体验的在线图书平台,通过个性化推荐提高用户粘性和满意度。目标是帮助用户快速找到感兴趣的图书,减少选择困难,同时为管理员提供便捷的管理工具。 其他说明:文中提及的技术细节包括Django的ORM、视图层和数据库模型设计,以及协同过滤算法的具体实现方法。对于有兴趣深入了解的读者,可以进一步研究相关代码和技术实现。

    毕业设计-龙兵智能名片4.99.12-整站商业源码.zip

    毕业设计-龙兵智能名片4.99.12-整站商业源码.zip

    基于NGO-LSTM神经网络的短期光伏功率预测.zip

    基于NGO-LSTM神经网络的短期光伏功率预测.zip

Global site tag (gtag.js) - Google Analytics