有才华的人,别忘记给滋润你的那块土壤施肥

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  28 随笔 :: 5 文章 :: 147 评论 :: 0 Trackbacks
     写过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也还是能派上用处的。
posted on 2009-08-16 10:32 kissjava 阅读(1651) 评论(1)  编辑  收藏 所属分类: Flex

评论

# re: Flex Hack 01:labelFunction的使用 2009-08-16 11:04 凡客诚品
不错哦  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: