flex复选框和下拉列表的几种用法整理http://www.jb51.net/article/39597.htm

本文介绍了如何在Flex框架中利用复选框进行全选、全不选、反选等操作,并展示了动态数据绑定实现复选框的下拉功能。通过代码实例详细解释了复选框的选中状态管理和下拉菜单的交互逻辑。

转载自:http://www.jb51.net/article/39597.htm

自己闲暇时间整理了有关复选框可下拉的几种用法,在这里与大家分享下,感兴趣的朋友可以参考下哈,希望对大家有所帮助
这几天接触了flex的很多控件,让我印象最深刻的就是控件的数据绑定几乎所有控件都可以这样做,基本上来说原理和html一样,我自己闲暇时间就整理了有关复选框可下拉的几种用法,下面就给大家分享一下。

1.复选框 
这里我主要研究的该控件的全选,全不选,反选以及选中的操作,原理也就是也能用selected这个属性,true表示选中,只需遍历就能实现,此处我使用的是动态的复选框,页面代码如下 
<mx:VBox top="50"> 
<mx:VBox> 
<mx:Canvas width="100%" height="100%" > 
<mx:Repeater id="rep" dataProvider="{array}"> 
<mx:CheckBox id="checkbox" label="{rep.currentItem.name}" x="{rep.currentItem.x}" data="{rep.currentItem.id}"/> 
</mx:Repeater> 
</mx:Canvas> 
</mx:VBox> 
<mx:VBox> 
</mx:VBox> 
</mx:VBox> 
<s:Button x="90" y="81" label="全选" click="checkAll()"/> 
<s:Button x="168" y="81" label="全不选" click="checkNotAll()"/> 
<s:Button x="246" y="81" label="反选" click="reverse()"/> 

刚看到可能比较陌生下面我把Array的定义贴出来 

public var array:Array=new Array({"name":"语文","id":"chinese","x":"80"},{"name":"数学","id":"math","x":"160"},{"name":"英语","id":"english","x":"240"}); 
这种处理一般是用于动态的数据,静态的就直接写了,下面是我的ActionScript 

/全选 
private function checkAll():void{ 

for(var i:int=0;i<array.length;i++){ 
checkbox[i].selected=true; 

all=all+checkbox[i].data+","; 
} 
Alert.show("选择了:"+all.substr(0,all.lastIndexOf(","))); 
all=""; 
} 
//全不选 
private function checkNotAll():void{ 

for(var i:int=0;i<array.length;i++){ 
checkbox[i].selected=false; 
} 
} 
//反选 
private function reverse():void{ 

for(var i:int=0;i<array.length;i++){ 
if(checkbox[i].selected){ 
checkbox[i].selected=false; 
}else{ 
checkbox[i].selected=true; 
} 

} 
} 
很简单吧,下面是下拉的使用,我的做法是先初始化下拉把数据绑定上去,之后根据需要修改下拉显示的内容,只需合理运用好下拉的selectedItem就可以修改下拉选中的值了

<mx:ComboBox id="subject" x="78" y="149" labelField="name" dataProvider="{array}"/> 
下面是页面加载的初始化方法 
<PRE class=java name="code">public function init(event:Event):void{ 
for(var i:int=0;i<array.length;i++){ 
if("数学"==array[i].name){ 

subject.selectedIndex=i; 
checkbox[i].selected=true; 
} 
} 

}</PRE><BR> 
这里我顺便把数学的复选框弄成了默认选中<BR> 
看起来代码有点乱,下面我把整个页面代码都贴出来<BR> 
<PRE class=html name="code"><?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" initialize="init(event)"> 
<fx:Declarations> 
<!-- Place non-visual elements (e.g., services, value objects) here --> 
</fx:Declarations> 
<fx:Script> 
<![CDATA[ 
import mx.controls.Alert; 
public var all:String=""; 

public var array:Array=new Array({"name":"语文","id":"chinese","x":"80"},{"name":"数学","id":"math","x":"160"},{"name":"英语","id":"english","x":"240"}); 

public function init(event:Event):void{ 


for(var i:int=0;i<array.length;i++){ 
if("数学"==array[i].name){ 

subject.selectedIndex=i; 
checkbox[i].selected=true; 
} 
} 

} 
//全选 
private function checkAll():void{ 

for(var i:int=0;i<array.length;i++){ 
checkbox[i].selected=true; 

all=all+checkbox[i].data+","; 
} 
Alert.show("选择了:"+all.substr(0,all.lastIndexOf(","))); 
all=""; 
} 
//全不选 
private function checkNotAll():void{ 

for(var i:int=0;i<array.length;i++){ 
checkbox[i].selected=false; 
} 
} 
//反选 
private function reverse():void{ 

for(var i:int=0;i<array.length;i++){ 
if(checkbox[i].selected){ 
checkbox[i].selected=false; 
}else{ 
checkbox[i].selected=true; 
} 

} 
} 
]]> 
</fx:Script> 
<mx:VBox top="50"> 
<mx:VBox> 
<mx:Canvas width="100%" height="100%" > 
<mx:Repeater id="rep" dataProvider="{array}"> 
<mx:CheckBox id="checkbox" label="{rep.currentItem.name}" x="{rep.currentItem.x}" data="{rep.currentItem.id}"/> 
</mx:Repeater> 
</mx:Canvas> 
</mx:VBox> 
<mx:VBox> 
</mx:VBox> 
</mx:VBox> 
<s:Button x="90" y="81" label="全选" click="checkAll()"/> 
<s:Button x="168" y="81" label="全不选" click="checkNotAll()"/> 
<s:Button x="246" y="81" label="反选" click="reverse()"/> 
<mx:ComboBox id="subject" x="78" y="149" labelField="name" dataProvider="{array}"/> 

</s:Application> 
</PRE><BR> 
<BR> 
<PRE></PRE> 
<P></P> 
<PRE></PRE> 
<IMG alt="" src="https://img-blog.youkuaiyun.com/20130706214231250?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbndpbGwz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">




### 三级标题:Flex布局详解 Flex 布局(Flexible Box Layout)是一种现代的 CSS 布局模式,专门用于创建灵活、响应式的界面设计。Flex 布局的核心目标是提供一种更加高效的方式来对容器中的子元素进行排列、对齐分配空间,尤其是在不同屏幕尺寸设备上。 #### 容器与项目 在 Flex 布局中,任何使用 `display: flex` 或 `display: inline-flex` 的元素都会成为 Flex 容器,其直接子元素则被称为 Flex 项目。Flex 容器可以控制其子项目的排列方式、对齐方式以及空间分配。通过设置容器的属性,可以实现种布局效果,例如垂直居中一个块内容,使容器的所有子项占用等量的可用宽度/高度,而不管有少宽度/高度可用。此外,Flex 布局还能够使列布局中的所有列采用相同的高度,即使它们包含的内容量不同[^1]。 #### 核心概念 Flex 布局的核心概念包括主轴(main axis)交叉轴(cross axis)。主轴是 Flex 容器的主要方向,而交叉轴则是垂直于主轴的方向。Flex 容器可以通过设置 `flex-direction` 属性来定义主轴的方向,可值包括 `row`、`row-reverse`、`column` `column-reverse`。默认情况下,主轴为水平方向,起点在左端(`row`)。通过 `flex-wrap` 属性,可以控制当主轴上的项目数量超过容器大小时是否换行。`flex-flow` 是 `flex-direction` `flex-wrap` 的简写属性。 #### 对齐方式 Flex 布局提供了丰富的对齐方式,使得开发者可以轻松地控制项目的对齐分布。`justify-content` 属性用于控制主轴上的对齐方式,可值包括 `flex-start`、`flex-end`、`center`、`space-between` `space-around`。`align-items` 属性用于控制交叉轴上的对齐方式,适用于单行布局。对于行布局,可以使用 `align-content` 属性来控制交叉轴上的行对齐方式[^3]。 #### 实际应用示例 以下是一个简单的 Flex 布局示例,展示了如何使用 Flex 布局实现一个基本的导航栏: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> .container { display: flex; justify-content: space-between; align-items: center; background-color: #f8f9fa; padding: 10px; } .item { background-color: #007bff; color: white; padding: 10px 20px; margin: 5px; text-align: center; } </style> </head> <body> <div class="container"> <div class="item">Home</div> <div class="item">About</div> <div class="item">Contact</div> </div> </body> </html> ``` 在这个示例中,`.container` 类被设置为 Flex 容器,`justify-content: space-between` 使得项目在主轴上两端对齐,`align-items: center` 使得项目在交叉轴上居中对齐。每个 `.item` 类代表一个导航项,具有背景颜色、内边距外边距等样式。 #### 总结 Flex 布局提供了一种强大的方式来创建灵活、响应式的界面设计。通过设置容器的属性,可以轻松地控制子项目的排列、对齐空间分配。Flex 布局的核心概念包括主轴交叉轴,以及一系列用于控制对齐方式的属性。通过合理使用这些属性,可以实现各种复杂的布局效果,从而提升用户体验。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值