`
darrenzhu
  • 浏览: 785899 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

自定义Spark组件

阅读更多
Flex3里面如果要自定义组件,一般首先继承一个flex3中的已有组件,然后覆盖createChildren方法,并在里面实例化你自己的东西。但是Flex4中的spark组件就有些不同了,因为spark组件把逻辑和皮肤分别放在不同的类里面,如Panel,你会发现有一个PanelSkin与之对应。

那么在Flex4中如何自定义自己的组件呢? 按如下步骤:
1)New 一个Mx Skin类并继承你需要的类,比如我的为MyPanelSkin继承自PanelSkin,Flash builder里面提供了new Mx Skin的选项,完成本步骤后,你会发行MyPanelSkin里面已经有PanelSkin里的所有代码了,现在你可以通过可视化或这代码来修改你的皮肤,比如给panel的顶部的右边加上一个最大化按钮,等等,你可以加你所需要的东西

2)在MyPanelSkin里给你的组件添加一个id
比如我将Spark Panel 里原来的titleDisplay改成了如下形式,即添加了自定义的东西
                <!-- layer 3: text -->
                <!--- @copy spark.components.Panel#titleDisplay -->
				<s:VGroup height="100%" width="100%">
					<s:HGroup width="100%" horizontalAlign="center">
						<s:Label id="titleDisplay" maxDisplayedLines="1" fontSize="18" fontFamily="宋体"
								 left="9" right="3" top="1" bottom="0" minHeight="30"
								 verticalAlign="middle" textAlign="start" fontWeight="bold">
						</s:Label>
					</s:HGroup>
					<s:Spacer height="5"/>
					<s:HGroup width="100%" verticalAlign="middle">
						<mx:LinkButton id="btnPreviousDay" label="前一天" fontFamily="宋体"/>
						<s:HGroup width="100%" horizontalAlign="center">
							<s:ComboBox id="comboBoxMonth" width="60"/>
							<s:VGroup paddingTop="3">
								<mx:Label text="月" fontFamily="宋体"/>
							</s:VGroup>
							<s:ComboBox id="comboBoxDay"  width="60"/>
							<s:VGroup paddingTop="3">
								<mx:Label text="日" fontFamily="宋体"/>
							</s:VGroup>
							<s:Spacer width="3"/>
							<s:Button id="searchBtn" label="查看" fontFamily="宋体"/>
							<s:Button id="backBtn" label="返回" fontFamily="宋体"/>
						</s:HGroup>
						<mx:LinkButton id="btnNextDay" label="后一天" fontFamily="宋体"/>
					</s:HGroup>
					<s:Spacer height="2"/>
				</s:VGroup>



3)new 一个MyPanel继承自Spark Panel,并且在里面添加属性,属性名字与MyPanelSkin的id的值保持一致,这一点非常重要,一定要取一样的名字,
并且要给这些变量加上元数据,[SkinPart (required="false or true")],通过这些变量你就可以访问MyPanelSkin里面的元素了,当然必须完成第4步后,你才能访问。

4)按如下方式覆盖partAdd,在partAdd里面操作你的属性,你可以为这些属性所代表的组件添加事件监听器,或者赋初始值。
package view.component
{
	import mx.collections.ArrayCollection;
	
	import spark.components.ComboBox;
	import spark.components.Panel;
	
	public class MyPanel extends Panel
	{
		public function MyPanel()
		{
			super();
		}
		
		[SkinPart (required="false")]
		public var comboBoxMonth:ComboBox
		
		[SkinPart (required="false")]
		public var comboBoxDay:ComboBox
		
		override protected function partAdded(partName:String, instance:Object):void {
			super.partAdded(partName, instance);
			var monthProvider:ArrayCollection=new ArrayCollection();
			var dayProvider:ArrayCollection=new ArrayCollection();
			
			for(var i:int=1;i<=12;i++){
				monthProvider.addItem(i);
			}
			
			for(var j:int=1;j<=31;j++){
				dayProvider.addItem(j);
			}
			if (instance == comboBoxMonth) {
				comboBoxMonth.dataProvider=monthProvider;
				
			}else if(instance==comboBoxDay){
				comboBoxDay.dataProvider=dayProvider;
			}
		}
		
	}
}
分享到:
评论

相关推荐

    Flex4开发的自定义输入框皮肤组件,代图标

    Flex4开发的自定义输入框皮肤组件,代图标,圆角,主要测试Flex4 spark主题下如何自定义组件皮肤。

    精讲Flex4组件开发(附源码)

    Spark组件架构剖析 理解Flex4组件生命周期 Demo Q & A

    griffin-dashboard

    在各个组件的README.md文件中可以找到类似的说明。 对于程序员和贡献者,请从下面的“ 部分开始; 这将引导您完成基本基础结构的示例,包括创建新的仪表板页面所需的一切。 项目中的其他一些README.md子都有自己的...

    sparkProjectTemplate.g8:Spark项目的模板

    然后,您可以根据需要替换wordcount示例,并自定义项目所需的Spark组件。 为了鼓励良好的软件开发实践,首先要从一个代码覆盖率为100%的项目开始(例如,一个测试:p),尽管预期此项目会减少,但我们希望您使用...

    huaweicloudDocs#dli#自定义镜像概述1

    在容器集群中,Spark作业和Flink作业相关组件都运行在容器中,通过下载DLI提供的自定义镜像,可以改变Spark作业和Flink作业的容器运行环境。例如,

    spark:Spark是基于视图JavaScript框架

    自定义构建选项,用于获取您自己需要的框架的最少必需部分。 对所有框架的高级编译支持。 创建将在开发和生产中使用的框架的两个版本。 允许在不使用Closure库和Closure工具的情况下使用生产版本,这是该项目的最终...

    spark-streaming-exercises:Spark Streaming练习的骨架

    该组件背后的思想是基于经典auth.log和access.log的内容来模拟两个日志信息源。 通过指定要经历的迭代次数以及每次迭代的成功和失败日志条目数来配置生成器。 这允许侦听的Spark Streaming开发不同的解决方案,以...

    spark skins

    资源包中包含了几个组件的自定义SparkSkin皮肤文件,包括dropDownList和titleWindowskin closeButtonskin共同学习

    java实现数据同步源码-BigData-In-Practice:大数据实践项目Hadoop、Spark、Kafka、Hbase、Flink

    所属组件 介绍 MapReduce MapReduce 实验 - 计算气温 最大/最小/平均 值 HDFS HDFS Java API 增删查改 HDFS Timer 定时将日志文件备份到 HDFS 中去,copyFromLocalFile MapReduce MapReduce 计算共同好友 MapReduce ...

    利用Python建立零售电商客户流失模型.zip

    资源包含文件:设计报告word+项目源码 ...RF采用SparkSQL的原始数据,采用Spark ML组件,配合airflow+spark submit定时任务部署。 详细介绍参考:https://blog.csdn.net/sheziqiong/article/details/125661924

    积分java源码-cs143_spark_hw:cs143_spark_hw

    非常重要,允许开发人员在表达式中定义和利用自定义操作。 让我们看一个例子。 想象一下,您有一个包含产品包装照片的产品目录。 您可能希望注册一个用户定义的函数extract_text ,该函数调用 OCR 算法并返回图像中...

    余烬火花::宏大的UI组件,适合您的Ember应用

    适用于Ember应用程序的雄心勃勃的UI组件 ...Ember Sparks随附了一些方便的预装组件,例如{{input-spark}}和{{toggle-spark}} 。 您只需将它们放入模板即可使用它们: {{ input-spark placeholder = " you

    Ambari下Hive3.0升级到Hive4.0

    Ambari下Hive3.0升级到Hive4.0,验证自测;

    为Deepin/UOS上的UEngine安卓运行环境安装自定义APK软件包,并能发送安装的APK包启动菜单到桌面或系统菜单

    新版本Deepin/UOS发布后,可以在应用商店安装部分官方已适配的安卓应用,对爱好者来说,不能自己安装APK软件包始终差点意思,本程序可以为Deepin/UOS上的Uengine安卓运行环境安装/卸载/打包自定义APK软件包,并能...

    使用IDEA编写SparkSql自定义聚合函数——强类型Dataset(求平均值)

    代码测试前请确保各个组件均已安装 1、环境准备 1、准备json文件: {name: zhangsan,age: 17} {name: lisi,age: 18} {name: wangwu,age: 20} 2、使用IDEA软件,创建maven工程 3、添加pom依赖 2、maven工程pom依赖 ...

    积分java源码-cs143-spark:cs143-火花

    允许开发人员定义和利用表达式中的自定义操作。 例如,假设您有一个包含产品包装照片的产品目录。 您可能希望注册一个用户定义的函数extract_text ,该函数调用 OCR 算法并返回图像中的文本,以便您可以从照片中获取...

    SparkSql技术

    三:sparkSQL组件之解析 17 3.1:LogicalPlan 18 3.2:SqlParser 20 3.1.1:解析过程 20 3.1.2:SqlParser 22 3.1.3:SqlLexical 25 3.1.4:query 26 3.3:Analyzer 26 3.4:Optimizer 28 3.5:SpankPlan 30 四:...

    企道OA办公自动化系统

     7、集成Spark即时通讯工具,实现类似企业QQ的即时消息、文件发送与共享、消息广播等。  8、集成外部邮件管理组件,提供 web方式的远程邮件服务。  9、集成手机短信组件,重要信息可直接发送到员工手机,支持...

    yelper_recommendation_system:Yelper推荐系统

    此README文件描述了“ Yelper”的几个主要组件,Yelper是主要使用Python使用Spark框架构建的业务推荐系统。 以下是“ Yelper”的一些功能: 按城市划分原始业务数据,可以进行微调和自定义推荐 使用Spark MLlib的...

Global site tag (gtag.js) - Google Analytics