Flex两种改变树结点图标的方法
方法一:根据是否有子结点进行改变。 <fx:Style> 方法二:根据结点的属性,灵活改变图标。 <?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" minWidth="955" minHeight="600"> <fx:Script> <![CDATA[ ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> <fx:XML id="treeData"> <root> <node label="CI配置项" iconName="computer.png"> <node label="资源" iconName="computer.png"> <node label="硬件资源" iconName="computer.png"> <node label="硬件设备" iconName="computer.png"> </node> <node label="硬件模块" iconName="computer.png"> <node label="端口" iconName="computer.png"> </node> </node> </node> </node> </node> <node label="字典" iconName="dictionary.png"> </node> </root> </fx:XML> </fx:Declarations> <mx:Tree left="5" top="5" bottom="5" width="150" dataProvider="{treeData}" id="myTree" showRoot="false"? labelField="@label" itemRenderer="com.flex.tree.dynamicicontree.IconTreeRenderer"> </mx:Tree> </s:Application> package com.flex.tree.dynamicicontree { import flash.xml.*; import mx.collections.*; import mx.controls.Image; import mx.controls.listClasses.*; import mx.controls.treeClasses.*; import mx.styles.StyleManager; /* * ?ICON Tree的渲染器 */ public class IconTreeRenderer extends TreeItemRenderer { protected var myImage:ImageRenderer;? private var imageWidth:Number = 16; private var imageHeight:Number = 16; private static var defaultImg:String = "windows.png"; public function IconTreeRenderer ()? { super(); } override protected function createChildren():void { super.createChildren(); myImage = new ImageRenderer(); myImage.source = defaultImg; myImage.width=imageWidth; myImage.height=imageHeight; myImage.setStyle( "verticalAlign","middle" ); addChild(myImage); } //通过覆盖data方法来动态设置tree的节点图标 override public function set data(value:Object):void { super.data = value; var imageSource:String=value.@iconName.toString(); if(imageSource!="") { myImage.source=imageSource; }else{ myImage.source=defaultImg; } } //隐藏原有图标,并设置它的坐标 override protected function updateDisplayList(unscaledWidth:Number,unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth,unscaledHeight); if(super.data !=null) { if (super.icon != null) { myImage.x = super.icon.x; myImage.y = 2; super.icon.visible=false; } else { myImage.x = super.label.x; myImage.y = 2; super.label.x = myImage.x + myImage.width + 17; } } } } } package com.flex.tree.dynamicicontree { import mx.controls.Image; public class ImageRenderer extends Image { private var defaultURL:String = "assets/icon/"; public var iconName:String; public function ImageRenderer() { super(); } override public function set source(url:Object):void{ super.source = defaultURL + url; iconName = url as String; } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby-on-rails – 在mongoid上进行全文搜索所需的建议
- ruby – 使用rbenv不能与sudo一起使用?
- ruby-on-rails – Rails 3 cattr_accessor线程安全吗?
- SQLite – Perl
- ruby-on-rails – RubyMine无法识别Rails应用程序
- 用PHP连mysql和oracle数据库性能比较
- dart – Flutter ListView,SliverList等内的当前滚动偏移量
- micro2440/tiny6410使用JLINK直接烧录nand flash
- ruby-on-rails – Ruby,SSLSockets和Apple的增强型APN消息格
- C#对象与XMl文件之间的相互转换