2014-06-09 40 views
0

我将项目从XML文件填充到组合框。我试图自定义出现在组合框中的每个项目的字体颜色。有什么建议么?Flash Builder - 自定义组合框

谢谢! - 系统

+0

请确保您提及版本(Flex 3或Flex 4),因为“Halo”和“Spark”组件有所不同。 –

回答

0

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

0

您将需要使用ItemRenderer。你们虽然没有提及,但似乎你正在使用Flex 3.使用ItemRenderer的方法是Flex 3的VS的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 = [email protected]; 
       if([email protected] == "AK") { 
        lbl.setStyle("color","#FF0000"); 
       } 
       else if([email protected] == "AR") { 
        lbl.setStyle("color","#FF00FF"); 
       } 
       else { 
        lbl.setStyle("color","#000000"); 
       } 
      } 
     ]]> 
    </mx:Script> 
    <mx:Label id="lbl"/> 
</mx:VBox> 

不要忘记在最后if(默认情况下)时,你重写set data方法。