Flex之Tree组件(修改图标,加复选框)
来源:互联网 发布:爆屏软件 编辑:程序博客网 时间:2024/04/30 01:27
一、效果展示
二、mxml文件
<?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" > <!-- <fx:Style> @namespace s "library://ns.adobe.com/flex/spark"; @namespace mx "library://ns.adobe.com/flex/mx"; mx|Tree{ /*去掉默认文件夹图标*/ folderClosedIcon: ClassReference(null); folderOpenIcon: ClassReference(null); /*去掉叶子节点图标*/ defaultLeafIcon: ClassReference(null); } </fx:Style> --> <fx:Script> <![CDATA[ [Bindable] private var layerData:XMLList = XMLList( '<node label="Inbox" selected="true" icon="parent">' + '<node label="Marketing" selected="true" icon="child"/>' + '<node label="Product Management" selected="false" icon="child"/>' + '<node label="Personal" selected="false" icon="child" />' + '</node>' + '<node label="Outbox" icon="parent" selected="false" >' + '<node label="Professional" selected="true" icon="child"/>' + '<node label="Personal" icon="child" selected="true"/>' + '</node>'); [Embed(source="images/map-service.png")] public var pIcon:Class; [Embed(source="images/layer.png")] public var cIcon:Class; private function SetIcon(item:Object):*{ var xml:XML = item as XML; if(xml.attribute("icon")=="parent") { return pIcon; } else { return cIcon; } } ]]> </fx:Script> <mx:Tree id="myTree" width="100%" height="100%" labelField="@label" showRoot="true" dataProvider="{layerData}" itemRenderer="TreeCheckBoxRenderer" iconFunction="SetIcon" /></s:Application>
三、TreeCheckBoxRenderer.as
package { import flash.events.Event; import flash.events.MouseEvent; import mx.controls.Alert; import mx.controls.CheckBox; import mx.controls.Tree; import mx.controls.treeClasses.TreeItemRenderer; import mx.controls.treeClasses.TreeListData; /** * 支持CheckBox的TreeItemRenderer * @author Montage */ public class TreeCheckBoxRenderer extends TreeItemRenderer { public function TreeCheckBoxRenderer() { super(); } protected var checkBox:CheckBox; /** * 构建CheckBox */ override protected function createChildren():void { super.createChildren(); checkBox = new CheckBox(); addChild( checkBox ); checkBox.addEventListener(Event.CHANGE, changeHandler); } /** * 点击checkbox时,更新dataProvider * @param event */ protected function changeHandler( event:Event ):void { //var i:int=0; if( data.@selected!="" ) { data.@selected = checkBox.selected.toString(); /** * 如果有需要,在这里处理选中父,全选子节点的方法。 * */ for (var i:int=0;i<data.children().length();i++) { data.children()[i].@selected=checkBox.selected.toString();; } } } /** * 初始化控件时, 给checkbox赋值 */ override protected function commitProperties():void { super.commitProperties(); if(data.@selected!="" ) { if(data.@selected=="true"){ checkBox.selected=true; }else{ checkBox.selected=false; } } else { checkBox.selected = false; } } /** * 重置itemRenderer的宽度 */ /* override protected function measure():void { super.measure(); measuredWidth += checkBox.getExplicitOrMeasuredWidth(); } */ /** * 重新排列位置, 将label后移 * @param unscaledWidth * @param unscaledHeight */ override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth, unscaledHeight); var startx:Number = data ? TreeListData( listData ).indent : 0; if (disclosureIcon) { disclosureIcon.x = startx; startx = disclosureIcon.x + disclosureIcon.width; disclosureIcon.setActualSize(disclosureIcon.width, disclosureIcon.height); disclosureIcon.visible = data ? TreeListData( listData ).hasChildren : false; } if (icon) { icon.x = startx+ icon.measuredWidth; //startx = icon.x + icon.measuredWidth; icon.setActualSize(icon.measuredWidth, icon.measuredHeight); } checkBox.move(startx, ( unscaledHeight - checkBox.height ) / 2 ); label.x = startx + checkBox.getExplicitOrMeasuredWidth()+icon.measuredWidth+3; } }}
1 0
- Flex之Tree组件(修改图标,加复选框)
- Flex tree组件数据源、图标等修改
- Flex Tree以及复选框tree(icon)
- flex datagrid(表格) 加一列复选框
- Flex Tree 组件数据源 图表等 修改
- Flex tree加虚线并且替代原始图标
- flex基础之tree组件的使用
- Flex 自定义tree图标
- Flex Tree组件Demo
- Flex Tree组件
- Swing组件之复选框选项
- 修改ext tree 图标
- 改变flex tree节点图标
- Flex之旅--AdvancedDataGrid 修改树节点图标
- Flex之旅--AdvancedDataGrid 修改树节点图标
- flex datagrid复选框
- ExtJS复选框tree
- dhtml--复选框组件
- 虚拟机重命名
- Gradle Project项目、Module模块导入
- 【绿皮】新GRE阅读理解教程Exercise1
- UIImage 图片处理:截图,缩放,设定大小,存储
- android界面切换滑动动画
- Flex之Tree组件(修改图标,加复选框)
- 带你接入云端-FusionSphere开放性漫谈
- android亮屏、暗屏、解锁、关闭系统对话的监听事件
- 关于MATLAB中结构数组的使用
- 为什么我希望用C而不是C++来实现ZeroMQ
- DeepID人脸识别算法之三代
- 理解OAuth 2.0
- Android中IntentService与Service的区别
- hiho拓扑排序专题 ——第四十八、四十七周