在ComboBox的提示label上显示其他的元素,效果如下图: 这里对ComboBox进行了重写,主要代码如下: package org.control { import mx.controls.ComboBox; import mx.core.UIComponent; import mx.events.ListEvent; public class AdvancedComboBox extends ComboBox { /** * 显示label的类(可以是颜色,图片等等),通过指定类名来创建不同的UI组件 */ private var _labelClass : Class; /** * 用来显示的UI组件 */ private var iconLabel : UIComponent; /** * iconLabel的值,如果iconLabel是图片,则该值可能是String类型或者是Class类型; * 如果是背景,则有可能是uint.此值的类型根据用户的需要而不同. */ private var _iconPrompt : Object; /** * 标记_iconPrompt是否已改变 */ private var iconPromptChanged : Boolean; public function AdvancedComboBox() { super(); } override protected function commitProperties():void{ super.commitProperties(); if(iconPromptChanged){ iconLabel.setStyle("backgroundColor", iconPrompt); iconPromptChanged = false; } } override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{ super.updateDisplayList(unscaledWidth, unscaledHeight); if(iconLabel){ iconLabel.width = 25; iconLabel.height = this.height - 5; iconLabel.x = 10; iconLabel.y = (height - iconLabel.height)/2; } } override public function set selectedIndex(value:int):void{ super.selectedIndex = value; if(selectedItem) iconPrompt = selectedItem.value; } /** * 提示的值.Object * @param value * */ public function set iconPrompt(value : Object) : void{ _iconPrompt = value; iconPromptChanged = true; invalidateProperties(); } public function get iconPrompt() : Object{ return _iconPrompt; } /** * "提示的组件"的类名 * @param value * */ public function set labelClass(value : Class) : void{ _labelClass = value; } public function get labelClass() : Class{ return _labelClass; } /** * 创建显示"提示"组件. * */ override protected function createChildren() : void{ super.createChildren(); if(!iconLabel){ iconLabel = new labelClass(); addChild(iconLabel); textInput.x = 30; } } } }