有才華的人,別忘記給滋潤你的那塊土壤施肥

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

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

          評論

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

          主站蜘蛛池模板: 象山县| 遵化市| 通化县| 东乡县| 黑山县| 小金县| 新巴尔虎右旗| 鸡东县| 渝中区| 茶陵县| 泰州市| 南澳县| 天等县| 定陶县| 满城县| 平安县| 德阳市| 井冈山市| 宁城县| 成都市| 城市| 林州市| 馆陶县| 武义县| 永顺县| 鄯善县| 平阴县| 南雄市| 宜章县| 措勤县| 宜良县| 湄潭县| 南木林县| 洛隆县| 弥勒县| 民权县| 溧阳市| 曲麻莱县| 芦山县| 松原市| 乌什县|