<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    路是爬出來的

    設計可組裝的j2me UI(五) List

            高級UI中的List控件對于廣大應用來說是足夠的。但有些特別需求的功能確不得不自己開發,比如實現沒一行字體顏色不同,字體樣式不同,還有排版等方面問題時候則要自己動手實現一個了。下面把我在項目中學習到得經驗與大家分享下。

           但是客戶有個需求,說你這個List需要翻頁,我要求輸入什么鍵你進行上下翻頁。我要求在每一行字體里面包含一些不同顏色得字,根據XP,好我擁抱需求。所以讓我們來看下怎么修改程序得。

          注意在看這篇文章之錢,請稍微留意下在下得前面幾篇文章。謝謝,^_^

          代碼如下,我會加比較多得注釋



    java 代碼


     


    1. /******************************************************************** 

    2.  *  

    3.  * 版權說明,此程序僅供學習參考。不能用于商業 

    4.  *  

    5.  ********************************************************************/  

    6. package org.pook.ui;  

    7.   

    8. import java.util.Vector;  

    9.   

    10. import javax.microedition.lcdui.Graphics;  

    11. import javax.microedition.lcdui.Image;  

    12.   

    13. import org.pook.ui.core.Platform;  

    14. import org.pook.ui.util.GraphicsUtil;  

    15.    

    16.   

    17. /** 

    18.  * 類名:List.java 

       
       

    19.  * 編寫日期: 2006-10-14 

       

    20.  * 程序功能描述:實現Part部件,而獲取可按照自己要求得效果得List

       

    21.  * Demo: 

       

    22.  * Bug: 

       

    23.  *  

    24.  * 程序變更日期 :

       
       

    25.  * 變更作者 :

       
       

    26.  * 變更說明 :

       

    27.  *  

    28.  * @author wuhua 

       
       

    29.  */  

    30. public class List extends Part {  

    31.     Image icon;  

    32.     Vector items;        

    33.     int numOfEls;   

    34.     int paintSize;  

    35.     int space;  

    36.     /** 開始索引 * */  

    37.     private int startIndex;  

    38.     





    39.     public List(Image icon) {  

    40.         super(021, Platform.WIDTH, Platform.HEIGHT - 41);  

    41.         this.icon = icon;  

    42.         items = new Vector();  

    43.            

    44.     }  

    45.    


    46.    /** 主要是根據屏幕變化而改變各個StringItem的位置跟當前屏幕可以顯示StringItem的大小* */ 


    47.  


    48.     public void changeViewAndSize(){  

    49.         if (Platform.HEIGHT - 20 > view[HEIGHT]) {  

    50.             view[HEIGHT] = Platform.HEIGHT - 41;  

    51.             space = font.getHeight() + 2;  

    52.             paintSize  = view[HEIGHT] / space;  

    53.         }  

    54.     }  

    55.    


    56.     public void append(Vector items){  

    57.         if(items == null)  

    58.             return;  

    59.         this.items = items;  

    60.         this.numOfEls = items.size();  

    61.     }  

    62.   

    63.     public void append(String stringItem){  

    64.         this.items.addElement(stringItem);  

    65.         this.numOfEls = items.size();  

    66.     }  

    67.       

    68.       

    69.     public void insert(String stringItem){  

    70.         this.items.insertElementAt(stringItem,0);  

    71.         this.numOfEls = items.size();  

    72.     }  

    73.       

    74.     public int getSelectIndex(){  

    75.         return this.selectIndex;  

    76.     }  

    77.       

    78.     public String getSelectString(){  

    79.         //System.out.println(this.numOfEls);  

    80.         return (String) this.items.elementAt(selectIndex+startIndex );  

    81.     }  

    82.       

    83.     public void paint(Graphics g) {  

    84.         changeViewAndSize();  

    85.         GraphicsUtil.fillScreen(g, this.bgColor, view[X], view[Y], view[WIDTH], view[HEIGHT]);  

    86.         paintStrings(g);  

    87.     }  

    88.   

    89.     private void paintStrings(Graphics g) {  

    90.       

    91.         if (items.size() == 0)  

    92.             return;  

    93.         int size = this.paintSize > this.numOfEls? this.numOfEls:this.paintSize + startIndex;  

    94.           

    95.         paintSelect(g, view[Y] + space * selectIndex + 2 );  

    96.           

    97.         g.setColor(this.fontColor);  

    98.           

    99.         for(int i =startIndex,j=0; i< size; i++, j++){  

    100.                

    101.             String it = (String) items.elementAt(i);          

    102.               

    103.             if(this.selectIndex == j){  

    104.                 it = (String) items.elementAt(selectIndex+startIndex);  

    105.                 //this.select.paint(view[X], height, view[WIDTH],it.getItemHeight(),g);  

    106.             }else{  

    107.                    

    108.             }  

    109.             GraphicsUtil.darwString(g,it, view[X] + 10, view[Y] + space *j + 2);  

    110.             // 變化的高度  

    111.                

    112.         }    

    113.     }  

    114.     private void paintSelect(Graphics g, int height) {  

    115.         g.setColor(0x909090);  

    116.         g.fillRect(view[X], height, view[WIDTH], space);  

    117.     }  

    118.   

    119.     public void onClick(int keyCode) {  

    120.         keyUpAndDown(keyCode);  

    121.     }  

    122.   

    123.     /** 

    124.      * 內部實現按鈕向上向下時候的動作,有具體類的keyPress調用. 

    125.      *  

    126.      * @param keyCode 

    127.      */  

    128.     void keyUpAndDown(int keyCode) {  

    129.         if(this.numOfEls == 0)  

    130.             return;  

    131.         switch (keyCode) {  

    132.       

    133.         case Platform.KEY_UP: {  

    134.             selectIndex--;  

    135.                

    136.          break;  

    137.                 

    138.                

    139.         }  

    140.         case Platform.KEY_DOWN: {  

    141.             selectIndex++;  

    142.                

    143.              break;  

    144.         }  

    145.         }  

    146.         changeSelectIndex();  

    147.     }  

    148.       

    149.     /** 

    150.      * 判斷當前選擇條是否到了底部,經過用戶的選擇,這些選擇條會不斷的變化

       變化的依據是當selectPosition >=
       

    151.      * viewPart[HEIGHT]*/  

    152.     private void changeSelectIndex(){  

    153.         int num = (this.paintSize < numOfEls)?paintSize:numOfEls;//取可顯示的菜單項數目  

    154.         if (selectIndex>num-1)  

    155.         {  

    156.             startIndex++;  

    157.             selectIndex=(byte)(num-1);  

    158.         }  

    159.           

    160.         if (selectIndex < 0)  

    161.         {  

    162.             if (startIndex>0)  

    163.             {  

    164.                 selectIndex =0;  

    165.                 startIndex--;  

    166.             }  

    167.             else  

    168.             {  

    169.                 startIndex = numOfEls-num;  

    170.                 selectIndex=num-1;  

    171.             }  

    172.               

    173.         }  

    174.         if (startIndex+ selectIndex > numOfEls -1)  

    175.         {  

    176.             startIndex= 0;  

    177.             selectIndex = 0;  

    178.         }  

    179.     }  

    180.   

    181. }  


    posted on 2006-12-30 09:24 路是爬出來的 閱讀(150) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 成全在线观看免费观看大全| 亚洲国产精品无码久久九九大片| 精品国产亚洲一区二区三区在线观看| 中文字幕免费视频精品一| 波多野结衣久久高清免费| 亚洲视频一区二区三区| 伊人久久大香线蕉免费视频| 婷婷综合缴情亚洲狠狠尤物| 亚洲欧美日韩中文高清www777| 成人免费的性色视频| 亚洲丁香色婷婷综合欲色啪| 在线观看免费黄色网址| 亚洲人成网站色在线入口| 国产成人亚洲精品播放器下载| 日本一道在线日本一道高清不卡免费| 自拍日韩亚洲一区在线| 免费无码A片一区二三区| 亚洲精品国产日韩| 国产一区在线观看免费| 狼色精品人妻在线视频免费| 国产一级淫片免费播放电影| 无码免费又爽又高潮喷水的视频 | 四虎精品成人免费视频| 亚洲精品成人区在线观看| 午夜不卡AV免费| 亚洲AV永久无码精品水牛影视 | 亚洲乱码在线视频| 全黄性性激高免费视频| 精品熟女少妇aⅴ免费久久 | 国产成人AV免费观看| 亚洲人成网站在线观看播放青青| 一二三四视频在线观看中文版免费| 亚洲av午夜国产精品无码中文字| 亚洲成人免费在线观看| 亚洲日韩国产精品第一页一区| 黄色视屏在线免费播放| 亚洲精品国产肉丝袜久久| 国产日产成人免费视频在线观看| 一区二区三区免费视频观看| 亚洲第一页中文字幕| 亚洲成a人片在线不卡|