Flex 改变树结点图标的2种方法介绍

2023-12-05 0 432

方法一:根据是否有子结点进行改变 复制代码 代码如下: <fx:Style> @namespace s \”library://ns.adobe.com/flex/spark\”; @namespace mx \”library://ns.adobe.com/flex/mx\”; mx|Tree{ /*去掉默认文件夹图标*/ folderClosedIcon: Embed(source=\’resource/region.png\’); folderOpenIcon: Embed(source=\’resource/region.png\’); /*去掉叶子节点图标 defaultLeafIcon: ClassReference(null); */ /* defaultLeafIcon 指定叶图标 disclosureClosedIcon 指定的图标旁边显示一个封闭的分支节点。默认的图标是一个黑色三角形。 disclosureOpenIcon 指定的图标旁边显示一个开放的分支节点。默认的图标是一个黑色三角形。 folderClosedIcon 关闭指定的文件夹图标的一个分支节点。 folderOpenIcon 指定打开的文件夹图标的一个分支节点。 例:三角图标修改如下代码使用即可换成自己的了: disclosureOpenIcon:Embed(source=\’resource/region.png\’); disclosureClosedIcon:Embed(source=\’resource/region.png\’); */ } </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; } } }

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Flex Flex 改变树结点图标的2种方法介绍 https://www.u-9.cn/biancheng/flex/96601.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务