- 浏览: 761435 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (573)
- Java基础 (76)
- C++基础 (5)
- hibernate (5)
- struts (4)
- spring (1)
- webservice (7)
- AjaX基础 (0)
- JS脚本 (53)
- 正则表达式 (5)
- html脚本 (30)
- 数据库基础 (54)
- 工作相关 (49)
- 其他 (30)
- Linux (9)
- web服务器 (17)
- JSP (13)
- eclipse (6)
- 面试题相关 (20)
- XML (3)
- Apache common (2)
- 生活 (35)
- VMware (1)
- log4j (9)
- BeanUtils (2)
- 设计模式 (3)
- UML (1)
- UNIX (1)
- ibats (5)
- GT-Grid (17)
- ABAP学习 (17)
- ABAP (35)
- ABAP--ALV (11)
- ABAP--WEBDIMPRO (0)
- abap-sample (1)
- BEMS (2)
- flex (33)
- GIS技术 (3)
最新评论
网上遇到很多需要在Tree控件添加CheckBox等控件的问题, 本以为把Tree的itemRenderer设置成mx.controls.CheckBox 就可以完事了, 但是试了之后才发现没有这么简单 . . .
今天看了Tree的源码, Tree在初始化的时候默认给自己设置itemRenderer属性. 此属性值也是Flex现成的:mx.controls.treeClasses.TreeItemRenderer.
它内部分为三部分:1,icon也是就三角形的小图标. 2,disclosureIcon文件夹图标. 3,label显示的文字. 我只要在label前面加上一个CheckBox就行了.
于是我写了一个类:TreeCheckBoxRenderer继承mx.controls.treeClasses.TreeItemRenderer源码如下:
测试文件如下:
注意:selected属性很重要, 此属性在数据源内, 标致当前节点的CheckBox是否选中.点击CheckBox会自动改变响应的数据源. 如果想知道哪些被选中的话, 就遍历Tree的dataProvider吧~
谨以此文贡献给战斗在RIA第一线的兄弟姐妹们.
今天看了Tree的源码, Tree在初始化的时候默认给自己设置itemRenderer属性. 此属性值也是Flex现成的:mx.controls.treeClasses.TreeItemRenderer.
它内部分为三部分:1,icon也是就三角形的小图标. 2,disclosureIcon文件夹图标. 3,label显示的文字. 我只要在label前面加上一个CheckBox就行了.
于是我写了一个类:TreeCheckBoxRenderer继承mx.controls.treeClasses.TreeItemRenderer源码如下:
package com.montage.controls.treeClasses { import flash.events.Event; import mx.controls.CheckBox; import mx.controls.treeClasses.TreeItemRenderer; import mx.controls.treeClasses.TreeListData; /** * 支持CheckBox的TreeItemRenderer * @author Montage */ public class TreeCheckBoxRenderer extends TreeItemRenderer { public function TreeCheckBoxRenderer() { 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 * @param event */ 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后移 * @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; startx = icon.x + icon.measuredWidth; icon.setActualSize(icon.measuredWidth, icon.measuredHeight); } checkBox.move(startx, ( unscaledHeight - checkBox.height ) / 2 ); label.x = startx + checkBox.getExplicitOrMeasuredWidth(); } } }
测试文件如下:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" fontSize="12"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; [Bindable] 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="com.montage.controls.treeClasses.TreeCheckBoxRenderer" dataProvider="{collection}"/> </mx:Application>
注意:selected属性很重要, 此属性在数据源内, 标致当前节点的CheckBox是否选中.点击CheckBox会自动改变响应的数据源. 如果想知道哪些被选中的话, 就遍历Tree的dataProvider吧~
谨以此文贡献给战斗在RIA第一线的兄弟姐妹们.
发表评论
-
便携电脑使用详情
2011-04-03 18:30 794便携机 IBM T410I 配置:I3-380M /2G/3 ... -
Geoserver如何访问shapefile或PostGIS数据库
2010-08-20 13:11 2564数据库, Geoserver, PostGIS, shapef ... -
flex读取post方式的request参数
2010-08-09 21:52 1438目标: 使用flex在不发送请求的情况下,从request中 ... -
flex向struts2(action)传输数据
2010-08-09 21:50 1528目标: 实现从flex页面向后台的服务框架(struts ... -
flex登录
2010-08-05 16:19 909<?xml version="1.0" ... -
GNU、GPL和LGPL
2010-07-30 16:52 11761.GNU 和 Linux 的关系 GN ... -
计算机世界里的法律:软件使用许可的一些知识
2010-07-30 16:43 937在Internet上的软件一般 ... -
企业用户合法使用 GPL/LGPL 自由软件的指导(zz)
2010-07-30 16:39 1331本文给出了一些指导性 ... -
地图服务器的选择
2010-07-30 13:17 1495地图服务器的比较与选 ... -
MapServer学习笔记
2010-07-30 09:49 21091、MapServer简介 M ... -
Mapserver起步
2010-07-29 19:13 1849Mapserver起步 Mapserver是比较著名的 ... -
MapXtreme Java 版 --- 100% 纯Java 地图应用服务器
2010-07-28 13:42 1893企业可以通过地图实现 ... -
开源的地图服务器
2010-07-28 13:24 1985完全商业化的地 ... -
flexbuilder打包swc
2010-07-12 11:12 2692flexbuilder打包swc地址: http://blo ... -
flex 加载图片时的相关问题
2010-07-06 16:31 1143桌面背景布局 居中 平鋪 拉伸 DesktopBack ... -
OpenLayers项目分析
2010-07-02 14:39 1909摘要:OpenLayers 是由 Meta ... -
GIS 标准体系
2010-07-02 12:25 1399GIS 标准体系 我可没想 ... -
三种地理参考信息模型:WMS,WFS,WCS
2010-07-02 12:08 1101关键字: gis wms wfs wcs OGC ... -
Flex的几个值得借鉴的项目
2010-07-01 10:19 1729Flex的几个值得借鉴的项目 1、Merapi 经过近 ... -
台式电脑使用详情
2010-06-29 13:07 807台式电脑使用详情 联想启天 M5650 配置:AMD RS76 ...
相关推荐
flex带复选框的tree,包含源代码,需要用到的朋友请下载
flex复选树形下拉框,在ReportListPage.mxml里面有应用及树数据的加载
NULL 博文链接:https://01jiangwei01.iteye.com/blog/738094
NULL 博文链接:https://discolt.iteye.com/blog/853450
flex tree中渲染checkbox
flex tree+checkbox可实现级联勾选
本资源中包括Tree的文件和Tree的渲染文件(Checkbox),实现功能为点击树不获取值(也可以获取,改变一个变量即可),只有勾选Checkbox才能得到。并添加到集合中
flex3中构造带复选框的树(CheckBoxTree),使用xml数据源,并且可以自定义图标。
这个是带有checkbox的tree,下载即可使用哦。
flex中tree和checkbox结合使用的插件,该压缩包包含两个文档,一个是tree和checkbox结合使用的插件,另一个是使用示例
在网上找到了关于flex 的tree在前面加上checkbox, 我经过改动, 现在很适合使用。
flex 中tree渲染checkbox,支持复选多选。
在原来flex的Tree组件上添加复选框CheckBox
flex tree+checkbox可实现级联勾选 修改后 修改CheckTreeDemoRenderer.as这个文件中 while (!cursor.afterLast){ if (cursor.current.@state == STATE_CHECKED) { noChecks++; }else if (cursor.current.@state =...
flex tree 复选框,以及父目录的三种状态。(全部选中,部分选中,没有选中)
绝对可执行的CheckBoxTree,很好,很强大!!!
这个flex中的tree ,在其前面加一下复选框,让操作更方便,很不错
flex advancedDataGrid 中如何实现带checkbox的树