有才華的人,別忘記給滋潤(rùn)你的那塊土壤施肥

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            28 隨筆 :: 5 文章 :: 147 評(píng)論 :: 0 Trackbacks
               寫過Swing的人都知道,如果使用List的組件或包含List組件如JComboBox,他們的item需要顯示幾個(gè)字段的時(shí)候,需要做額外的動(dòng)作,比如
          在List需要顯示的對(duì)象添加一個(gè)toString方法便能組合顯示出想要的效果,但是有時(shí)候一個(gè)POJO或VO又不允許你添加這么一個(gè)方法。這個(gè)時(shí)候就需要在Renderer中利用反射的機(jī)制能解決所需要的方法。
            
               但是在Flex中就能很方便的解決這樣的問題,對(duì)于顯示一個(gè)字段,只需要指定對(duì)應(yīng)字段屬性給labelField即可,當(dāng)需要上述所需要的功能的時(shí)候就得做個(gè)轉(zhuǎn)換了,在Flex的基于List的組件都有一個(gè)labelFunction方法能很簡(jiǎn)單指定所需要顯示的內(nèi)容。
            
               如有這么一個(gè)例子,有一個(gè)對(duì)象他包含一個(gè)name和age,現(xiàn)在需要一個(gè)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的測(cè)試?yán)?/span>"/>
              
          <mx:ComboBox id="cbx" labelFunction="cbxDisplayFunction" 
                 dataProvider
          ="{cbxDataProvider}"    x="30" y="60"/>
          </mx:Application>
                測(cè)試結(jié)果圖為:
            

                這個(gè)labelFunction方法也可用于DataGrid中,如果有時(shí)候需要國(guó)際化之類的需求的時(shí)候,labelFunction也還是能派上用處的。
          posted on 2009-08-16 10:32 kissjava 閱讀(1690) 評(píng)論(1)  編輯  收藏 所屬分類: Flex

          評(píng)論

          # re: Flex Hack 01:labelFunction的使用 2009-08-16 11:04 凡客誠品
          不錯(cuò)哦  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 内江市| 柳江县| 昭觉县| 西平县| 鄢陵县| 宣城市| 高邮市| 青河县| 隆回县| 东海县| 全州县| 临桂县| 珲春市| 云梦县| 馆陶县| 松江区| 宁波市| 穆棱市| 巴林右旗| 龙胜| 尉犁县| 定日县| 万载县| 舟山市| 合水县| 婺源县| 健康| 丹江口市| 洮南市| 江油市| 永清县| 招远市| 卓尼县| 肇东市| 攀枝花市| 邢台市| 进贤县| 孝昌县| 湖南省| 梨树县| 七台河市|