当前位置: > 网站建设 > Flex教程 >

Flex Hack 01: labelFunction的使用

时间:2012-03-24 | 栏目:Flex教程 | 点击:

写过Swing的人都知道,如果使用List的组件或包含List组件如JComboBox,他们的item需 要显示几个字段的时候,需要做额外的动作,比如

在List需要显示的对象添加一个toString方法便能组合显示出想要的效果,但是有时候一 个POJO或VO又不允许你添加这么一个方法。这个时候就需要在Renderer中利用反射的机制能 解决所需要的方法。

但是在Flex中就能很方便的解决这样的问题,对于显示一个字段,只需要指定对应字段属 性给labelField即可,当需要上述所需要的功能的时候就得做个转换了,在Flex的基于List 的组件都有一个labelFunction方法能很简单指定所需要显示的内容。

如有这么一个例子,有一个对象他包含一个name和age,现在需要一个ComboBox显示为: “name,age”,下面看例子代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"  layout="absolute"
      creationComplete="init()" backgroundColor="white">
     <mx:Script>
         <![CDATA[

             [Bindable]
             private var cbxDataProvider:Array;

             private function init():void
             {
                 cbxDataProvider = [
                             {name:"kissjava",  age:"100"},
                             {name:"rocky",  age:"88"},
                             {name:"jiang",  age:"99"}
                 ];
             }

             private function cbxDisplayFunction (data:Object):String
             {
                 var label:String = "";
                 if(data.hasOwnProperty("name")){
                     label += data.name + ",";
                 }
                 if(data.hasOwnProperty("age")){
                     label += data.age;
                 }

                 return label;
             }
         ]]>
     </mx:Script>
     <mx:Text id="text" x="30" y="30" text="这是labelFunction的测试例 子"/>
     <mx:ComboBox id="cbx" labelFunction="cbxDisplayFunction"
        dataProvider="{cbxDataProvider}"    x="30" y="60"/>
</mx:Application>

测试结果图为:

这个labelFunction方法也可用于DataGrid中,如果有时候需要国际化之类的需求的时候 ,labelFunction也还是能派上用处的。

您可能感兴趣的文章:

相关文章