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>
運行後效果:
DevExpress WinForms擁有180+組件和UI庫,能爲Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易於使用的應用程序,無論是Office風格的界面,還
介紹 Apache DolphinScheduler是一個分佈式易擴展的開源分佈式調度系統,支持海量數據處理,具有任務流程調度、任務流程編排、任務監控告警、工作流引擎等功能。 本文將介紹如何將Apache DolphinScheduler集
一、配置入口 Logback支持XML、Groovy的配置方式,以XML來說,它會默認查找resources目錄下的logback-test.xml(用於測試)/logback.xml文件。 而如果你使用的Spring Boot,那麼你還可
鴻蒙原生應用再新丁!新華社 入局鴻蒙 來自 #HarmonyOS# 微博5月27日消息 #鴻蒙千帆起#新華社客戶端完成鴻蒙原生應用核心版本開發,將實現不同使用場景下更加智能、精準、及時的要聞推送,以及主流價值的全場景覆蓋和高效傳播!與此同
在迅速變化的技術領域,本地環境的搭建和調試對於軟件開發的效率和效果至關重要。本文將詳細介紹如何爲Apache DolphinScheduler搭建一個高效的本地開發環境,包括2.x和3.x版本的設置方法。 無論您是初學者還是有經驗的開發者
前言 最近參與的項目中,接口中返回的日期格式不對,發現項目中配置了fastjson作爲spring的數據轉換器,於是使用了fastjson的字段格式化轉換註解 發現不起作用。這讓我很疑惑,然後在fastjson的相關代碼中打斷點發現請
鴻蒙原生應用再新丁!學習強國 入局鴻蒙 來自 #HarmonyOS# 微博5月23日消息 中央宣傳部宣傳輿情研究中心宣佈,將基於HarmonyOS NEXT鴻蒙星河版啓動“學習強國”App鴻蒙原生應用開發!“學習強國”App將爲鴻蒙生態帶
鴻蒙原生應用再新丁!芒果TV 入局鴻蒙 來自 #HarmonyOS# 微博5月21日消息 深受年輕人喜愛的@芒果TV 宣佈完成鴻蒙原生應用Beta版開發🎉芒果TV獨家精品內容結合HarmonyOS NEXT創新能力,將爲用戶帶來更加便捷
1. 背景介紹 1.1. 業務介紹 A平臺與B平臺同屬於同一系統鏈路上,前者主要致力於爲用戶提供註冊入駐服務,後者則專注於提供具體業務操作服務。兩者皆爲運營人員所依賴的在線管理工具。 1.2. 現狀分析 目前這兩個平臺服務於同一業務方,且B
1、查看網絡 docker network ls docker network inspect $container_name 2、docker-compose微服務庫擴容 前提:application.yml配置文件要做相應調整 dock
本文分享自華爲雲社區《通過HPA+CronHPA組合應對業務複雜彈性伸縮場景》,作者:雲容器大未來。 背景 在k8s集羣中,容器水平自動伸縮(HPA),可以根據容器資源的使用量,在設置好的副本範圍內,自動擴縮容工作負載副本數(repli
Vite 預構建的核心原理 1. 兼容性與性能的雙重目標 Vite 的預構建旨在解決兩個主要問題:兼容性和性能。對於兼容性,由於 Vite 在開發階段將所有代碼視爲原生 ES 模塊,因此需要將 CommonJS 或 UMD 格式的依賴轉
在windows環境,springboot 處理提交的json數據報錯“com.fasterxml.jackson.databind.JsonMappingException: Invalid UTF-8 start byte 0xb1”。
本文分享自華爲雲社區《【昇騰開發全流程】AscendCL開發板模型推理》,作者:沉迷sk。 前言 學會如何安裝配置華爲雲ModelArts、開發板Atlas 200I DK A2。 並打通一個Ascend910訓練到Ascend310推理
大家好,我是每天分享AI應用的螢火君! 今天繼續給大家分享ComfyUI的入門必備技能:ControlNet。 ControlNet 提供了十幾種生成圖片的控制方式,有的可以控制畫面的結構,有的可以控制人物的姿勢,還有的可以控制圖片的畫