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

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

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

    路是爬出來的

    設(shè)計(jì)可組裝的j2me UI(五) List

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

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

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

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



    java 代碼


     


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

    2.  *  

    3.  * 版權(quán)說明,此程序僅供學(xué)習(xí)參考。不能用于商業(yè) 

    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.  * 程序功能描述:實(shí)現(xiàn)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.    /** 主要是根據(jù)屏幕變化而改變各個StringItem的位置跟當(dāng)前屏幕可以顯示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.      * 內(nèi)部實(shí)現(xiàn)按鈕向上向下時(shí)候的動作,有具體類的keyPress調(diào)用. 

    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.      * 判斷當(dāng)前選擇條是否到了底部,經(jīng)過用戶的選擇,這些選擇條會不斷的變化

       變化的依據(jù)是當(dāng)selectPosition >=
       

    151.      * viewPart[HEIGHT]*/  

    152.     private void changeSelectIndex(){  

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

    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 路是爬出來的 閱讀(153) 評論(0)  編輯  收藏


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲一区二区三区四区视频| 亚洲视频一区二区三区| 亚洲 日韩 色 图网站| 91短视频在线免费观看| 久久亚洲精品视频| 国产V亚洲V天堂A无码| 一级毛片一级毛片免费毛片| 亚洲精品WWW久久久久久| 在线播放国产不卡免费视频| 亚洲日韩在线观看免费视频| aaa毛片免费观看| A级毛片内射免费视频| 亚洲色大成网站www久久九| 在线永久免费观看黄网站| 在线亚洲精品视频| 亚洲AV无码之日韩精品| 久久精品免费大片国产大片| 亚洲人成影院在线无码按摩店| 手机在线毛片免费播放| 亚洲色成人网站WWW永久四虎 | 亚洲男人第一av网站| 99re6在线精品免费观看| 久久香蕉国产线看观看亚洲片| 亚洲午夜福利在线视频| 又粗又黄又猛又爽大片免费| 青青操免费在线观看| 亚洲最大黄色网址| 夜夜嘿视频免费看| 黑人粗长大战亚洲女2021国产精品成人免费视频| 免费的一级片网站| 国产精品福利在线观看免费不卡| 日韩亚洲国产高清免费视频| 亚洲欧美日韩国产精品一区| 久久亚洲av无码精品浪潮| 亚洲AV色吊丝无码| 免费看国产精品麻豆| 成人久久免费网站| 中文字幕精品三区无码亚洲| 日本中文一区二区三区亚洲| 久久国产色AV免费观看| 狼人大香伊蕉国产WWW亚洲|