隨筆 - 35  文章 - 21  trackbacks - 0
          <2008年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           

           BlackBerry 界面開發過程中,我們繼承 Field 或者 它的子類 來制作自己的客戶定制組件

          覆蓋 protected void paint( Graphics g) ,在方法里可以繪制組件。
          覆蓋 protected void layou( int width, int height ), 在方法里決定組件的位置。

          覆蓋 public boolean isFocusable() , 在方法里返回 true ,指示組件可以接受焦點。
          覆蓋 protected void drawFocus(Graphics graphics, boolean on) , 在方法里繪制接受焦點時組件的外觀。

          覆蓋 protected void onFocus( int direction),得到焦點時將引發該方法,可以描述得到焦點時,組件的行為。
          覆蓋 protected void onUnFocus(),失去焦點時將引發該方法,可以描述失去焦點時,組件的行為,
          覆蓋 protected int moveFocus(int amount, int status, int time),焦點在組件內移動引發該方法,只有焦點在組件內才有效。
             
          覆蓋下列方法可以為 組件 提供對于各種事件的反應:
          protected  boolean keyChar(char character, int status, int time)
          protected  boolean keyControl(char character, int status, int time)
          protected  boolean keyDown(int keycode, int time)
          protected  boolean keyRepeat(int keycode, int time)
          protected  boolean keyStatus(int keycode, int time)
          protected  boolean keyUp(int keycode, int time)

          覆蓋上面的方法可以控制客戶定制組件的各種基本行為。


          但是做到這里,只是完成組件的內在行為和特性,

          但我們還需要在客戶組件產生事件的時候,和別的組件通信,通知其他組件。
          常用的方法是注冊一個事件偵聽器( eventListener),
          BlackBerry 有三種時間偵聽器:
          FieldChangeListener,偵聽組件屬性改變事件
          FocusChangeListener,偵聽組件焦點變化事件,只有在接收到焦點時有效
          ScrollChangeListener,偵聽組件滑輪變化事件,只有在有滑輪時有效

          FieldChangeListener,有點特殊,客戶組件需要自己引發 FieldChange 事件。
          引發方法是,在客戶組件類中覆蓋以下兩個方法:

          protected boolean navigationClick(int status, int time){
              fieldChangeNotify(
          1);
              
          return true;
          }


          protected void fieldChangeNotify(int context){
            
          try{
                   
          this.getChangeListener().fieldChanged(this, context);
               }
           
              
          catch (Exception exception) 
            
          {
                }

          }

           

           

          這樣,當按瀏覽中鍵時,便可以引發 FieldChange 事件。
          引發方法是可以改變的,keyDown(), KeyUp()...中都可以調用 fieldChangeNotify(1),引發 fieldChange 事件。

          posted on 2008-08-21 05:48 lincode 閱讀(387) 評論(0)  編輯  收藏 所屬分類: Blackberry
          主站蜘蛛池模板: 濉溪县| 阿瓦提县| 渝北区| 苏尼特右旗| 蛟河市| 清徐县| 眉山市| 成安县| 喀喇沁旗| 神木县| 布尔津县| 昭苏县| 故城县| 沿河| 万山特区| 易门县| 齐河县| 集安市| 清原| 崇左市| 嘉兴市| 新河县| 宜良县| 南阳市| 包头市| 涪陵区| 涞源县| 鱼台县| 磴口县| 洪江市| 定边县| 乌兰察布市| 惠水县| 深州市| 兴山县| 东兰县| 呈贡县| 罗定市| 安乡县| 隆回县| 东兴市|