Flash Builder - 自定义comboBox

时间:2014-06-09 19:44:28

标签: combobox flash-builder

我正在从xml文件中将项目填充到comboBox。我正在尝试自定义comboBox中显示的每个项目的字体颜色。有什么建议吗?

谢谢! --Moe

2 个答案:

答案 0 :(得分:0)

如果您使用Flash Builder,过程很简单。 ComboBox中的每个项目都由ItemRenderer组成。创建一个自定义项目渲染(文件 - > new - > mxml组件),扩展该基本ItemRenderer类,然后将此新的ItemRenderer分配给您的ComboBox。现在,在您的自定义ItemRenderer中,您可以更改值,字体大小等...

答案 1 :(得分:0)

您需要使用ItemRenderer。虽然你没有提到,但似乎你正在使用Flex 3.使用ItemRenderer的方式在Flex 3和Flex 4中略有不同。所以这是Flex 3的版本:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600">
    <mx:XMLList id="statesXMLList" xmlns="">
        <state abbrev="AK" name="Alaska" />
        <state abbrev="AZ" name="Arizona" />
        <state abbrev="AR" name="Arkansas" />
        <state abbrev="CA" name="California" />
        <state abbrev="CO" name="Colorado" />
        <state abbrev="CT" name="Connecticut" />
    </mx:XMLList>
    <mx:ComboBox id="comboBox"
                 prompt="Please select a State..."
                 dataProvider="{statesXMLList}"
                 rowCount="3"
                 labelField="@name"
                 itemRenderer="ComboBoxItemRenderer"
                 />
</mx:Application>

ItemRenderer的课程为ComboBoxItemRenderer,如下所示:

<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        <![CDATA[
            override public function set data(value:Object):void
            {
                super.data = value;
                lbl.text = value.@name;
                if(value.@abbrev == "AK") {
                    lbl.setStyle("color","#FF0000");
                } 
                else if(value.@abbrev == "AR") {
                    lbl.setStyle("color","#FF00FF");
                } 
                else {
                    lbl.setStyle("color","#000000");
                }
            }
        ]]>
    </mx:Script>
    <mx:Label id="lbl"/>
</mx:VBox>

每当您覆盖if方法时,请不要忘记最后set data(默认情况)。