Flex当中combobox的用法

  Flex 当中如何做下拉列表?总的来说,有两种方式,一种是mxml标签的方式,一种是as脚本的方式。两种方式有什么优缺点呢?标签的方式直观,对开发人员来说,可读性好。脚本的方式灵活,可以写复杂的逻辑,可以动态的生成。动态生成有什么好处,可以有多个效果。

  那么先看看动态生成是怎么实现的?有combobox 的组件。

package grid
{
	import flash.display.DisplayObject;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	
	import mx.containers.Grid;
	import mx.containers.GridItem;
	import mx.containers.GridRow;
	import mx.controls.ComboBox;

	import mx.collections.ArrayCollection;
	
	public class Entry extends Grid
	{
		public function Entry()
		{
			super();
			init();
		}
		public function init():void{
			var items:Array = [ 
				{label:"label1", data:"Data1"}, 
				{label:"label2", data:"Data2"}, 
				{label:"label3", data:"Data3"}, 
				{label:"label4", data:"Data4"}, 
				{label:"label5", data:"Data5"}, 
			]; 
			var aCb:ComboBox = new ComboBox();
			aCb.dataProvider = items; 
			
			aCb.addEventListener(KeyboardEvent.KEY_DOWN, onAddItem); 
			aCb.editable = true;
			
			var row:GridRow = new GridRow();
			var item:GridItem = new GridItem();
			item.addChild(aCb);
			row.addChild(item);
			this.addChild(row);
		}
		public function onAddItem(event:KeyboardEvent):void { 
			var newRow:int = 0; 
			if (event.target.text =="label") { 
				newRow = int(ArrayCollection(ComboBox(event.currentTarget).dataProvider).length) + 1; 
				ArrayCollection(ComboBox(event.currentTarget).dataProvider).addItemAt({label:String(event.target.text)+ newRow, data:"Data" + newRow},newRow-1);  
			} 
		}

	}
}


 下拉列表有哪些用户动作呢?用户要从一堆数据中选出一个来。归根到底都是从一个list当中选出一个来。那么list可变吗?可以往list里动态追加,这样的话list当中的项目数就会变化。项目数有没有极限?超过了屏幕的高度怎么办?可以加上滚动条。combobox 有两种,一种是可编辑的,一种是不可编辑的。编辑可能的话就是方便用户查找。可编辑的话可以自动加到list中去。这个功能不错。

combobox还可以有快捷键。如果要触屏的话,也可以做到,很好啊。提示有什么作用呢?



你可能感兴趣的:(杂文)