展会信息港展会大全

Flex 改变树结点图标的2种方法介绍
来源:互联网   发布日期:2016-01-26 10:18:18   浏览:2157次  

导读:本文为大家介绍两种方法改变树结点图标:根据是否有子结点进行改变、根据结点的属性,灵活改变图标,具体实现如下,感兴趣的朋友可以参考下哈,希望对大家有所帮助方法一:根据是否有子结点进行改变复制代码 代码 ...

本文为大家介绍两种方法改变树结点图标:根据是否有子结点进行改变、根据结点的属性,灵活改变图标,具体实现如下,感兴趣的朋友可以参考下哈,希望对大家有所帮助

方法一:根据是否有子结点进行改变

复制代码 代码如下:

<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;

}

}

}

赞助本站

人工智能实验室

相关热词: 图标 树结 Flex

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港