TreeCheckBoxRender.as
package model
{
import flash.events.Event;
import mx.controls.CheckBox;
import mx.controls.treeClasses.TreeItemRenderer;
import mx.controls.treeClasses.TreeListData;
/**
* 支持CheckBox的TreeItemRenderer
* @author jun
*
*/
public class TreeCheckBoxRender extends TreeItemRenderer
{
public function TreeCheckBoxRender()
{
super();
}
/**
* 表示checkBox控件从data中所取数据的字段
*/
private var _selectedField:String = "selected";
protected var checkBox:CheckBox;
/**
* 构建checkBox
*/
override protected function createChildren():void {
super.createChildren();
checkBox = new CheckBox();
addChild(checkBox);
checkBox.addEventListener(Event.CHANGE,changeHandler);
}
/**
* 点击checkbox时,更新dataProvider
*/
protected function changeHandler(event:Event):void {
if(data && data[_selectedField] != undefined) {
data[_selectedField] = checkBox.selected;
}
}
/**
* 初始化控件时,给checkBox赋值
*/
override protected function commitProperties():void {
super.commitProperties();
trace(data[_selectedField]);
if(data && data[_selectedField] != undefined) {
checkBox.selected = data[_selectedField];
} else {
checkBox.selected = false;
}
}
/**
* 重置itemRenderer宽度
*/
override protected function measure():void {
super.measure();
measuredWidth += checkBox.getExplicitOrMeasuredWidth();
}
/**
* 重新排列位置,将label后移
*/
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;
startx = icon.x + icon.measuredWidth;
icon.setActualSize(icon.measuredWidth,icon.measuredHeight);
}
checkBox.move(startx,(unscaledHeight - checkBox.height)/2);
label.x = startx + checkBox.getExplicitOrMeasuredWidth();
}
}
}
Tree.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12">
<mx:Script>
<!--[CDATA[
import mx.collections.ArrayCollection;
public var collection:ArrayCollection = new ArrayCollection([
{"name" : "上海", "selected":false, "children":[
{"name":"黄浦", "selected":false },
{"name":"浦东", "selected":true },
{"name":"静安", "selected":false },
{ "name":"徐汇", "selected":false }
]},
{"name":"北京", "selected":false,"children":[
{"name":"海淀", "selected":false },
{ "name":"朝阳", "selected":true },
{"name":"丰台", "selected":false } ]}
]);
]]-->
</mx:Script>
<mx:Tree width="300" height="500" labelField="name"
itemRenderer="model.TreeCheckBoxRender" dataProvider="{collection}"/>
</mx:Application>
运行后效果:
分享到:
相关推荐
Flex实现带复选框的列表树,实现全选和反选
Flex中嵌入Google地图 - 菩提树 - ITeye技术网站 分享:Flex builder3执行Debug需要安装的Flash Player Debugger环境 百度空间_应用平台 flex4 的DataGrid里面加一列CheckBox并实现数据交互的试验 - 暖阳下的猫的...
用数据动态绑定XML,然后实现flex中树的绑定
flex advancedDataGrid 中如何实现带checkbox的树
一个Flex带复选框的树的实现
flex复选树形下拉框,在ReportListPage.mxml里面有应用及树数据的加载
这是一个类似架构图的树,用d3实现的,可伸缩收起,基本效果能达到 ,,但是代码没怎么整理,可以自己在研究下
flex人力资源树例子,部门+人员结构图,使用tree+checkbox实现,人员可选
有时候tree节点内容太长,就需要用toolTip来实现鼠标滑过时提示全部内容。用两种方式实现. ...2.树本身属性showDataTips,加了一些小优化。 http://www.zuidaima.com/share/1722980750003200.htm
本上传资源中有1.RadioTree(支持联表查询的单选动态树)、2.SingleRadioTree(支持单表查询的单选动态树)、3.RadioTreeNode、4.RadioTreeRenderer四个文件,只要配置适当的参数和后台Java方法名即可调出响应的动态...
flex3.6 动态改变图标的小树 可扩展参数 唯一不足 1,显示根节点会报错,可以通过xml修改 2,xml没有配成FlashVars参数,因为如果不用脚本,实现,最好用动态语言配合使用(jsp)
本资源中包括Tree的文件和Tree的渲染文件(Checkbox),实现功能为点击树不获取值(也可以获取,改变一个变量即可),只有勾选Checkbox才能得到。并添加到集合中
前些日子看网上只有虚线连接的例子,无聊就给改了改
本项目通过使用flex\bison实现一个c-编译器,最终可生成语法分析树。
《flex 与 bison(影印版)...学习关键编程技术,包括抽象语法树和符号表 用完整的示例代码实现一个完善的SQI一语法 使用新的功能,如纯(可重入)词法分析器(Iexer)和语法分析器(parser)、功能强大的JGLR分析器和C++的接口
基于flexbison的语法分析C语言实现源码+项目说明.zip 本实验实现该语言的语法检查和分析。在检查语法错误的情形下,报告语法错误,通过语法检查后构建AST, 并输出该AST。 目录结构: ``` ├── README.md 本说明...
Flex+Blazed+J2EE 框架塔建,基本链接方式模板,封装flex代码,显示mxml与as剥离。flex代码分为3层,组件、控制、显示。...并且提供J2ee封装的远程Flex组件接口,实现类。创建了java程序员操作flex框架代码的桥梁。
本项目是基于flex,bison和LLVM,使用c ++ 11实现的类C语法编译器,使用flexbindingyacc对源代码进行词法,语法分析;在语法分析阶段生成整个源代码相应的抽象语法树后,根据LLVM IR(中间表示)模块中定义的中间...
编译原理课程设计使用Bison和Flex实现一个简单的编译器,将源代码翻译成四元式。编译下载野牛和flex sudo apt install bison flex编译make使用初始文件名是my_compiler,执行时有两个参数: -t生成抽象语法树-c用来...
4.1.9. 语法树 8 4.1.10. LL(k) 9 4.1.11. LR(k) 9 4.1.12. LALR(k) 9 4.1.13. GLR 9 4.1.14. 移进/归约 9 4.2. flex和bison文件格式 9 4.2.1. 定义部分 10 4.2.2. 规则部分 10 4.2.3. 用户子例程部分 10 4.3. flex...